+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