+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 �.
+
+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.