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