]> sjero.net Git - wget/blob - src/ChangeLog
Downgrade -r, -p with -O to a warning rather than an error; elaborate about bad combi...
[wget] / src / ChangeLog
1 2008-04-27  Micah Cowan  <micah@cowan.name>
2
3         * main.c (main): Downgrade -r, -p with -O to a warning rather than
4         an error; elaborate just a bit more for other -O combination
5         cases.
6
7 2008-04-26  Micah Cowan  <micah@cowan.name>
8
9         * http.c (gethttp): Move proxy CONNECT handling to below the
10         retry_with_auth label, to deal with properly reconnecting to
11         proxies when we need to authenticate.
12
13 2008-04-25  Micah Cowan  <micah@cowan.name>
14
15         * Makefile.am: -I foo -> -Ifoo.
16
17 2008-04-23  Micah Cowan  <micah@cowan.name>
18
19         * utils.c (test_dir_matches_p): Added a test for the case
20         described in issue #20518.
21
22 2008-04-22  Jim Paris  <jim@jtan.com>
23
24         * openssl.c (ssl_init): Enable combined certificate/key in
25         single file (apparent regression from ~1.9). Resolves issue
26         #22767.
27
28 2008-04-22  Steven Schubiger  <schubiger@gmail.com>
29
30         * http.c (print_response_line): Changed to make responses always
31         be logged, even in --quiet mode, if --server-response was
32         specified. This is to bring http.c's handling of the situation
33         in line with ftp.c's.
34
35 2008-04-22  Pranab Shenoy  <pranab.loosinit.shenoy@gmail.com>
36
37         * init.c: Added test_commands_sorted unit test to check is
38         commands are sorted.  Fixes bug #21245.
39
40         * test.c: Added test_commands_sorted to the test suite.
41
42 2008-04-22  Rabin Vincent  <rabin@rab.in>
43
44         * ftp.c (ftp_get_listing): Only remove .listing if it has been
45         created. 
46
47 2008-04-22  Alain Guibert  <alguibert+bts@free.fr>
48
49         * test.h (mu_run_test): Move declaration before statements, for
50         C90 conformance. Fixes bug #22789.
51
52 2008-04-22  Mike Frysinger  <vapier@gentoo.org>
53
54         * Makefile.am: Move @LIBS@ after other libraries, for better
55         static-linking support. Fixes bug #22143.
56
57 2008-04-12  Rabin Vincent  <rabin@rab.in>
58
59         * mswindows.c (fake_fork_child): Don't create a logfile for
60         --background when --quiet is used, but not --server-response.
61         Fixes bug #20917.
62
63         * utils.c (fork_to_background): Likewise.
64
65 2008-04-12  Micah Cowan  <micah@cowan.name>
66
67         * utils.c (aprintf): Minor formatting changes to Alex's code (80-
68         column limit, concatenated string literals, avoiding nesting
69         levels), and removed invocation of free (since we're aborting
70         anyway).
71
72 2008-04-11  Alexander Dergachev  <cy6erbr4in@gmail.com>
73
74         * utils.c (aprintf): Now we are setting limits (1 Mb) for text
75         buffer when we use non-C99 vsnprintf.
76         
77 2008-04-11  Micah Cowan  <micah@cowan.name>
78
79         * ftp.c (getftp, ftp_loop_internal): Don't append to an existing
80         .listing when --continue is used.  Fixes bug #22825. Thanks to
81         Rabin Vincent <rabin@rab.in> for pointing the way with a
82         suggested fix!
83
84 2008-04-10  Alexander Dergachev  <cy6erbr4in@gmail.com>
85
86         * xmalloc.c, xmalloc.h (memfatal): Now exported; accepts an
87         "unknown" value for the attempted allocation size.
88         * utils.c (aprintf): Now calls memfatal, instead of aborting.
89
90 2008-03-19  Micah Cowan  <micah@cowan.name>
91
92         * utils.c (test_dir_matches_p): More tests related for
93         dir_matches_p.
94
95 2008-03-17  Micah Cowan  <micah@cowan.name>
96
97         * connect.c: Include sys/time.h to support use of the select
98         function on older systems.
99
100 2008-02-11  Benno Schulenberg  <bensberg@justemail.net>
101
102         * http.c: More accurate and descriptive messages for when a file
103         won't be retrieved during spider-mode.
104
105 2008-02-10  Micah Cowan  <micah@cowan.name>
106
107         * http.c: Added existence_checked member to the http_stat
108         struct.
109         (gethttp): Mark hs->existence_checked when we've checked whether
110         a file-to-download exists; so we don't check it again if the
111         connection gets lost (and potentially pick a new "unique" name).
112         This fixes bug 22251.
113         * progress.c (create_image): Add space for an extra column in
114         the "eta" portion of the progress bar image; to deal with
115         too-long Czech translation.
116         * main.c, http.c, init.c: Added --auth-no-challenge option, to
117         bring back 1.10.2 unsafe auth behavior when needed. This fixes
118         bug #22242.
119
120 2008-02-07  Micah Cowan  <micah@cowan.name>
121
122         * progress.c (create_image): Remove assertion on exceeding
123         screen width, which given the less-than-robust code there, can
124         be broken by a number of factors (such as large file downloads).
125
126 2008-02-06  Micah Cowan  <micah@cowan.name>
127
128         * progress.c (countcols): Use strlen() when mbtowc or wcwidth
129         not available (or not using NLS).
130         * utils.c: Ensure we use single-byte separators when not doing
131         NLS progress-bars.
132         * wget.h: Determine whether to use NLS for progress-bars, based
133         on whether wcwidth and mbtowc are available.
134
135 2008-02-03  Micah Cowan  <micah@cowan.name>
136
137         * progress.c (create_image): Use number of characters/columns
138         consumed, rather than number of bytes, to determine how much of
139         a line we've used. Fixes assertion errors and field alignment
140         bugs (#22161, #20481)
141         (get_eta, count_cols): Added to support the changes for
142         create_image.
143         * http.c (http_loop): Put no-clobber logic back into http_loop,
144         before starting to fetch, for when we're not doing
145         content-disposition.
146
147 2008-01-31  Micah Cowan  <micah@cowan.name>
148
149         * http.c (gethttp): Don't derive hs->contlen from possibly
150         invalid/missing Content-Length; instead, get the appropriate
151         value from the Content-Range header values.
152         (parse_content_range): Handle '*' instance-length field.
153
154 2008-01-25  Micah Cowan  <micah@cowan.name>
155
156         * main.c: Added notes to translators regarding (C), diacritics
157         in names.
158         * Makefile.am, cmpt.c, connect.c, connect.h, convert.c,
159         cookies.c, cookies.h, ftp-basic.c, ftp-ls.c, ftp-opie.c, ftp.c,
160         ftp.h, gen-md5.c, gen-md5.h, gnutls.c, hash.c, hash.h, host.c,
161         host.h, html-parse.c, html-parse.h, html-url.c, http-ntlm.c,
162         http-ntlm.h, http.c, http.h, init.c, init.h, log.c, log.h,
163         main.c, mswindows.c, mswindows.h, netrc.c, netrc.h, openssl.c,
164         options.h, progress.c, progress.h, ptimer.c, ptimer.h, recur.c,
165         recur.h, res.c, res.h, retr.c, retr.h, spider.c, spider.h,
166         ssl.h, sysdep.h, test.c, test.h, url.c, url.h, utils.c,
167         utils.h, wget.h, xmalloc.c, xmalloc.h: Updated copyright year.
168
169 2007-12-10  Micah Cowan  <micah@cowan.name>
170
171         * main.c: The option is --content-disposition, not
172         --no-content-disposition (at the moment).
173
174 2007-12-08  Hrvoje Niksic  <hniksic@xemacs.org>
175
176         * ftp.c (ftp_retrieve_glob): Print both arguments of fnmatch in
177         fnmatch error message.
178         (ftp_retrieve_glob): Don't match with fnmatch if we're only
179         supposed to get one file.
180
181 2007-12-07  Micah Cowan  <micah@cowan.name>
182
183         * Makefile.am: Plug in vars to include stuff from
184         $(top_srcdir)/md5 when appropriate.
185
186 2007-12-05  Micah Cowan  <micah@cowan.name>
187
188         * utils.c (subdir_p): Handle the case where d1 is "".
189         * convert.c (convert_all_links): Don't return without
190         deallocating timer.
191
192 2007-11-28  Micah Cowan  <micah@cowan.name>
193
194         * Makefile.am, cmpt.c, connect.c, connect.h, convert.c,
195         convert.h, cookies.c, cookies.h, ftp-basic.c, ftp-ls.c,
196         ftp-opie.c, ftp.c, ftp.h, gen-md5.c, gen-md5.h, gnutls.c,
197         hash.c, hash.h, host.c, host.h, html-parse.c, html-parse.h,
198         html-url.c, http-ntlm.c, http-ntlm.h, http.c, http.h, init.c,
199         init.h, log.c, log.h, main.c, mswindows.c, mswindows.h,
200         netrc.c, netrc.h, openssl.c, options.h, progress.c, progress.h,
201         ptimer.c, ptimer.h, recur.c, recur.h, res.c, res.h, retr.c,
202         retr.h, safe-ctype.c, safe-ctype.h, spider.c, spider.h, ssl.h,
203         sysdep.h, test.c, test.h, url.c, url.h, utils.c, utils.h,
204         wget.h, xmalloc.c, xmalloc.h: Updated license exception for
205         OpenSSL, per the SFLC.
206
207 2007-10-30  Micah Cowan  <micah@cowan.name>
208
209         * main.c (main): Declare argv parameter as char **argv, rather
210         than char *const *argv. This fixes usage of getopt_long,
211         regardless of whether getopt_long has a constified argv or not.
212
213 2007-10-22  Gisle Vanem  <gvanem@broadpark.no>
214
215         * mswindows.c: Move INHIBIT_WRAP macro definition up with wget.h
216         inclusion.
217
218 2007-10-18  Steven Schweda  <sms@antinode.org>
219
220         * sysdep.h: #include <stdint.h> as well as <inttypes.h>, to work
221         around a glitch on Tru64 systems.
222
223 2007-10-18  Micah Cowan  <micah@cowan.name>
224
225         * Makefile.am: version.c should not be distributed. Removed
226         config-post.h. Add version.c dependency and gnulib include path
227         for libunittest.a.
228         * sysdep.h: Got contents of config-post.h
229         * config-post.h: Removed.
230         * wget.h: #include "config.h".
231         * alloca.c, cmpt.c, connect.c, convert.c, cookies.c,
232         ftp-basic.c, ftp-ls.c, ftp-opie.c, ftp.c, gen-md5.c, gnutls.c,
233         hash.c, host.c, html-parse.c, html-url.c, http-ntlm.c, http.c,
234         init.c, log.c, main.c, mswindows.c, netrc.c, openssl.c,
235         progress.c, ptimer.c, recur.c, res.c, retr.c, spider.c, url.c,
236         utils.c, xmalloc.c: Use wget.h at very top, and instead of
237         config.h.
238
239 2007-10-15  Micah Cowan  <micah@cowan.name>
240
241         * Makefile.am: Remove intermediary hg-id file generation, make
242         version.c-generation more portable.
243
244 2007-10-14  Micah Cowan  <micah@cowan.name>
245
246         * cmpt.c, cookies.c, ftp-basic.c, ftp-ls.c, ftp.c, hash.c,
247         host.c, html-parse.c, html-url.c, http-ntlm.c, http.c, init.c,
248         log.c, main.c, netrc.c, openssl.c, res.c, url.c, utils.c,
249         wget.h: Replace uses of ISSPACE, etc with c_isspace, etc.
250         * gnu-md5.c, gnu-md5.h: Removed, in deference to gnulib.
251         * Makefile.am: Removed gnu-md5.h from wget_SOURCES.
252         * gen-md5.c: Changed #inclusion of gnu-md5.h to md5.h (gnulib's).
253         * recur.c (download_child_p): Print error if unlink of
254         robots.txt fails.
255         * main.c (main): --spider or --delete-after now implies
256         --no-directories (thanks, Josh Williams).
257
258 2007-10-14  Joshua David Williams  <yurimxpxman@gmail.com>
259
260         * recur.c (download_child_p): Remove robots.txt if
261         --delete-after or --spider is on.
262
263 2007-10-13  Micah Cowan  <micah@cowan.name>
264
265         * Makefile.am: Make version.c depend on Wget dependencies (source
266         files, plus such things as LIBOBJS so we get things like
267         http-ntlm.c). Removed getopt.[ch], as we're now using gnulib for
268         these.
269
270 2007-10-10  Micah Cowan  <micah@cowan.name>
271
272         * http-ntlm.c: Include openssl/opensslv.h explicitly, instead of
273         hoping it'll be included by accident in openssl/des.h.
274
275 2007-10-09  Gisle Vanem  <gvanem@broadpark.no>
276
277         * mswindows.c: 'argc' and 'argv' in 'windows_main()' are no longer
278         needed.  Hence simply the prototype. Free 'exec_name' at exit.
279
280 2007-10-09  Micah Cowan  <micah@cowan.name>
281
282         * gettext.h: Imported from /usr/share/gettext, fuller handling
283         of --disable-nls.
284         * wget.h: Remove logic for handling lack of NLS (now in
285         gettext.h).
286         * main.c: Use gettext's ENABLE_NLS rather than HAVE_NLS.
287         * Makefile.am: added @LIBINTL@ to LIBS (though it probably
288         belongs in LDADD, along with everything else currently assigned
289         to LIBS).
290
291 2007-10-08  Micah Cowan  <micah@cowan.name>
292
293         * http.c (http_loop): Add send_head_first conditional back
294         around code that needs it, but not around the last-modified
295         header-parsing stuff this time. Removed no-longer-useful (was it
296         ever?) restart_loop boolean, continuing unconditionally at end
297         of send_head_first conditional block (if we haven't jumped out).
298
299 2007-10-04  Micah Cowan  <micah@cowan.name>
300
301         * http.c (http_loop): We've got_name if content_disposition
302         support isn't on; make sure we continue properly in that case,
303         even though we're not sending HEAD.
304         * Makefile.in: Removed, replaced by Makefile.am.
305         * Makefile.am: Converted from Makefile.in.
306
307 2007-10-02  Gisle Vanem  <gvanem@broadpark.no>
308         
309         * ftp.c: Use "_listing" for MSDOS (".listing" is illegal).
310
311         * url.c: Update comment for 'filechr_not_windows'.
312
313         * utils.c: Include <process.h> for 'getpid()' on Watcom.
314
315 2007-10-02  Micah Cowan  <micah@cowan.name>
316
317         * ftp.c (getftp, ftp_loop_internal), http.c (http_loop), main
318         (main): Use datetime_str instead of time_str, for those who have
319         potentially long-running sessions. Based on suggestions by Saso
320         Tomat <miskox@hotmail.com> and Steven M. Schweda
321         <sms@antinode.org>.
322         * http.c (gethttp): Warn about host lookup failures. Adjusted
323         from Stephen Gildea's patch.
324
325 2007-10-02  Stephen Gildea  <stepheng+wget@gildea.com>
326
327         * connect.c (connect_to_host): Warn about host lookup failures.
328
329 2007-09-25  Micah Cowan  <micah@cowan.name>
330
331         * Makefile.in: Use EXEEXT instead of exeext.
332
333 2007-09-24  Gisle Vanem  <giva@bgnett.no>
334
335         * connect.c, init.c, main.c, openssl.c, options.h, sysdep.h,
336         url.c, utils.c: Added support for building on MS-DOS.
337
338 2007-09-24  Jochen Roderburg  <roderburg@uni-koeln.de>
339
340         * http.c (http_zero): Remove no-longer-used local_size variable.
341         Fixes bug #21057.
342
343 2007-09-12  Micah Cowan  <micah@cowan.name>
344
345         * http.c (http_loop): Remove send_head_first from condition for
346         parsing timestamp.
347
348 2007-08-29  Micah Cowan  <micah@cowan.name>
349
350         * openssl.c (ssl_init): Re un-const-ified the meth local
351         variable, to match current versions of openssl.
352         * spider.c: Removed visited_url function, as it may be very
353         inefficient.
354         (print_broken_links): Removed traversal of referrers, until such
355         time as a more efficient implementation can be written.
356         * spider.h: Replaced declaration of visited_url with an
357         empty-bodied, function-like macro.
358
359 2007-08-27  Gisle Vanem  <giva@bgnett.no>
360
361         * mswindows.c (run_with_timeout): Ensure that the correct
362         conversion specification is used for the return result of
363         the GetLastError function.
364         * getopt.c: Fix missing (but, accidentally, legal) comment
365         delimiter after licensing text.
366         * recur.c (retrieve_tree): Inserted missing cast for strip_auth.
367         Includes adjustment by Ralf Wildenhues.
368         * openssl.c (ssl_init): const-ified the meth local variable.
369         * main.c: Include all the static function definitions in the
370         "#ifndef TESTING" clause, leaving just the definitions for
371         exec_name (not set), and opt.
372         * utils.c (run_with_timeout): Now returns bool, to align with
373         declaration in utils.h.
374
375 2007-08-27  Micah Cowan  <micah@cowan.name>
376
377         * wget.h: Added macro replacement for ngettext, for environs
378         that lack NLS.
379
380 2007-08-26  Micah Cowan  <micah@cowan.name>
381
382         * spider.c (print_broken_links): Fixed incorrect plurals msgid
383         usage, switched to use ngettext function.
384
385 2007-08-24  Micah Cowan  <micah@cowan.name>
386
387         * http.c (http_loop): Introduced time_came_from_head boolean
388         flag, to help avoid parsing the same Last-Modified header twice.
389         Replaced spidering returns of RETRUNNEEDED for some situations,
390         to RETROK, as otherwise it will be interpreted as an error.
391         RETRUNNEEDED appears never to be referenced outside of
392         http.c (and wget.h), and, when returned by gethttp, is
393         translated by http_loop to RETROK.
394         * url.c (are_urls_equal): Don't call getchar_from_escaped_string
395         if u2 is shorter than u1.
396         (getchar_from_escaped_string): Don't decode reserved characters.
397         Handle illegally appearing '%'s as literal '%'s. Ensure hex
398         digits before attempting to decode.
399         (test_are_urls_equal): Added tests to handle u2 shorter than u1,
400         and %2f not treated the same as /.
401         * spider.c (in_url_list_p): Don't call are_urls_equal if one of
402         them is NULL.
403
404 2007-08-23  Joshua David Williams  <yurimxpxman@gmail.com>
405
406         * spider.c (in_url_list_p): Removed the bool verbose argument
407
408 2007-08-22  Mauro Tortonesi  <mauro@ferrara.linux.it>
409
410         * http.c (http_loop): Fall back to GET if HEAD fails with a 500 or 501
411         error code.
412
413 2007-08-21  Mauro Tortonesi  <mauro@ferrara.linux.it>
414         
415         * http.c (http_loop): Send preliminary HEAD request if -N is given and
416         the destination file exists already.
417
418 2007-08-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
419
420         * http.c (http_loop): Fixed HTTP HEAD requests logic when --spider is
421         given.
422
423 2007-08-10  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
424
425         * url.c (append_uri_pathel): Do not assume dest string to be
426         zero-terminated.
427         (test_append_uri_pathel): Terminate string to fix test failure.
428
429 2007-08-09  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
430
431         * url.c (url_string): Use comparison, not assignment, in
432         check for auth_mode == URL_AUTH_HIDE_PASSWD.
433
434 2007-08-09  Micah Cowan  <micah@cowan.name>
435
436         * http.c (http_loop): If we got a HEAD and then a GET, and the
437         GET had a timestamp, use that one, not any we may have gotten
438         from the HEAD.
439
440 2007-08-08  Micah Cowan  <micah@cowan.name>
441
442         * init.c (defaults): Content disposition will not be default,
443         since it currently results in extra round-trips.
444
445 2007-07-31  Micah Cowan  <micah@cowan.name>
446
447         * http.c (gethttp): Set contlen = -1 when we encounter a
448         negative-valued Content-Length header, so we don't consider it
449         an internal error later on and call abort().
450
451 2007-07-29  Micah Cowan  <micah@cowan.name>
452
453         * url.h, url.c (url_string): Replaced bool arg of the url_string
454         function with enum url_auth_mode, with added option to
455         completely remove user/pass auth information.
456         * http.c, ftp.c, url.c, recur.c: Adapted call to url_string
457         function to fit new usage.
458         * recur.c (retrieve_tree): Remove auth info from Referer header.
459
460 2007-07-28  Micah Cowan  <micah@cowan.name>
461
462         * options.h, init.c, retr.c, main.c: renamed opt maxredirect
463         field to max_redirect, for improved consistency.
464         * init.c: changed max_redirect parser from cmd_number_inf to
465         cmd_number, as infinite redirects may not be appropriate.
466         Alternatively, if cmd_number_inf should be used, then
467         opt.max_redirect's value should be checked a bit differently in
468         retr.c, to allow for the "infinite" meaning of zero.
469
470 2007-07-25  Micah Cowan  <micah@cowan.name>
471
472         * http.c (create_authorization_line)
473         (basic_authentication_encode, known_authentication_scheme_p)
474         (load_cookies): Moved declarations up.
475         (basic_authed_hosts): Added. Tracks what hosts have issued Basic
476         challenge and been given the global username, password.
477         (maybe_send_basic_creds): Added. Sends Basic creds for hosts that
478         have issued Basic challenges.
479         (register_basic_auth_host): Added. Instantiates
480         basic_authed_hosts if necessary, then registers the host that
481         has issued a challenge.
482         (gethttp) <auth>: Only send authentication credentials after
483         we've received a challenge from that host. This is a stop-gap
484         fix until a proper fix can be implemented; still isn't quite
485         right, as we should only be sending credentials automatically
486         for authenticated paths and below, and not for the entire host.
487
488 2007-07-16  Joshua David Williams  <yurimxpxman@gmail.com>
489
490         * options.h: added maxredirect to options struct
491         * init.c: added maxredirect to list of variables
492         * retr.c (retrieve_url): replaced MAX_REDIRECTIONS with opt.maxredirect
493         * main.c: added option --max-redirect
494
495 2007-07-16  Joshua David Williams  <yurimxpxman@gmail.com>
496
497         * test.h: tests made more verbose; now displays the name
498         of each test run.
499
500 2007-07-10  Mauro Tortonesi  <mauro@ferrara.linux.it>
501
502         * http.c (http_loop): Fixed the HTTP requests logic. Now it skips the 
503         preliminary HEAD request if either -O or --no-content-disposition are 
504         given, and neither --spider and -N are given.
505
506 2007-07-05  Micah Cowan  <micah@cowan.name>
507
508         * cmpt.c, connect.c, connect.h, convert.c, convert.h:
509         * cookies.c, cookies.h, ftp-basic.c, ftp.c, ftp.h, ftp-ls.c:
510         * ftp-opie.c, gen-md5.c, gen-md5.h, getopt.c, getopt.h, gnu-md5.c:
511         * gnu-md5.h, gnutls.c, hash.c, hash.h, host.c, host.h:
512         * html-parse.c, html-parse.h, html-url.c, http.c, http.h:
513         * http-ntlm.c, http-ntlm.h, init.c, init.h, log.c, log.h, main.c:
514         * Makefile.in, mswindows.c, mswindows.h, netrc.c, netrc.h:
515         * openssl.c, options.h, progress.c, progress.h, ptimer.c:
516         * ptimer.h, recur.c, recur.h, res.c, res.h, retr.c, retr.h:
517         * safe-ctype.c, safe-ctype.h, spider.c, spider.h, ssl.h, sysdep.h:
518         * test.c, test.h, url.c, url.h, utils.c, utils.h, wget.h:
519         * xmalloc.c, xmalloc.h:
520         Updated GPL reference to version 3 or later, removed FSF
521         address.
522
523 2007-07-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
524
525         * http.c (http_loop): Skip HEAD request and start immediately with GET
526         if -O is given.
527
528 2007-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
529
530         * http.c (print_server_response): Escape non-printable characters
531         in server respone.
532
533 2007-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
534
535         * netrc.c: Don't make netrc_list static, as it prevents
536         compilation with DEBUG_MALLOC.
537
538         * utils.c (aprintf): Don't use vasprintf when DEBUG_MALLOC is
539         requested because, in that case, we want the calls to malloc to be
540         coming from us.
541
542 2007-01-23  Hrvoje Niksic  <hniksic@xemacs.org>
543
544         * cookies.c (parse_set_cookie): Would erroneously discard cookies
545         with unparsable expiry time.
546
547 2007-01-23  Hrvoje Niksic  <hniksic@xemacs.org>
548
549         * progress.c (create_image): Check for ETA overflow.
550         (print_row_stats): Ditto.
551
552 2007-01-09  Mauro Tortonesi  <mauro@ferrara.linux.it>
553
554         * init.c (cmd_spec_prefer_family): Small fix to get rid of a gcc
555         warning about strict-aliasing violation.
556
557 2007-01-09  Steven M. Schweda  <sms@antinode.org>
558
559         * ftp-basic.c (ftp_syst): Fixed segfault if response text is missing.
560
561 2006-12-29  Gisle Vanem  <giva@bgnett.no>
562
563         * mswindows.c: Avoid a warning if 'ws_hangup()' is unused.
564
565 2006-12-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
566
567         * http.c (parse_content_disposition): Consider directory prefix, if
568         specified.
569
570 2006-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
571
572         * retr.c (retrieve_from_file): Ditto.
573         (url_uses_proxy): New function.
574
575         * main.c (main): Don't check for opt.use_proxy when deciding
576         whether to call retrieve_url or retrieve_tree; check whether the
577         proxy would be used for *this* URL.
578
579 2006-10-17  Mike Grant  <mggr@pml.ac.uk>
580
581         * ftp.c (ftp_loop_internal): Would incorrectly skip changing
582         working directory when retrying after a failed FTP attempt.
583         Originally reported by Nate Eldredge.
584
585 2006-10-12  Mauro Tortonesi  <mauro@ferrara.linux.it>
586
587         * convert.c (downloaded_file): Fixed bug which used to break -E -k -K 
588         mode.
589
590 2006-08-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
591
592         * http.c: #include'd spider.h to get rid of compiler warnings.
593
594         * main.c: Ditto.
595
596         * recur.c: Ditto.
597
598 2006-08-24  Mauro Tortonesi  <mauro@ferrara.linux.it>
599
600         * Makefile.in: Added spider.c to the list of files to compile and
601         spider.h to the list of header files. Updated copyright information.
602
603         * http.c: Major changes to recursive spider mode. Now for every
604         resource we are supposed to check, we send a HEAD request to find out
605         if it exists. If the resource is a HTML file, we retrieve it and parse
606         it to discover links to other resources.
607
608         * recur.c: Ditto.
609
610         * res.c (res_retrieve_file): Disable opt.timestamping and opt.spider
611         when retrieving robots.txt. Updated copyright information.
612
613         * convert.c: Moved code tracking broken links to spider.c.
614
615         * convert.h: Ditto.
616
617         * spider.c: Created new file to keep track of visited URLs in spider
618         mode.
619
620         * spider.h: Ditto.
621
622 2006-08-21  Mauro Tortonesi  <mauro@ferrara.linux.it>
623
624         * http.c: Fixed timestamping-related bug.
625
626 2006-08-16  Mauro Tortonesi  <mauro@ferrara.linux.it>
627
628         * http.c: Fixed bug which broke --continue feature. Now if -c is
629         given, http_loop sends a HEAD request to find out the destination
630         filename before resuming download.
631
632 2006-08-08  Hrvoje Niksic  <hniksic@xemacs.org>
633
634         * utils.c (datetime_str): Avoid code repetition with time_str.
635
636 2006-07-21  Hrvoje Niksic  <hniksic@xemacs.org>
637
638         * init.c (commands): Correctly place "contentdisposition".
639
640 2006-07-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
641         
642         * sysdep.h: If intptr_t isn't defined, simply typedef it to long.
643
644         * http.c: Added explicit cast to int in logprintf call to remove
645         compiler warnings on 64-bit platforms.
646
647         * connect.c: Added a few casts to intptr_t to remove compiler warnings
648         on 64-bit platforms.
649         
650         * main.c: Disable -r, -p and -N when -O is used. Disable -k when -O is
651         used and multiple URLs are given. Update maintainer information.
652         
653         * all: Update copyright information.
654         
655 2006-07-10  KJKHyperion  <hackbunny@reactos.com>
656
657         * url.c (filechr_table): Mark DEL (0x7f) as a control character
658         and | as a character Windows can't handle.
659
660 2006-06-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
661
662         * res.c: Implemented is_robots_txt_url function for detection of
663         robots.txt URLs and related test routine.
664
665         * res.h: Ditto.
666
667         * url.c: Implemented are_urls_equal function for URL comparison and
668         related testing routine.
669
670         * url.h: Ditto.
671
672         * convert.c: Fixes for recursive spider mode: don't consider
673         non-existing robots.txt as a broken link, and use are_urls_equal
674         instead of strcasecmp for referrer URLs comparison.
675
676         * test.c: Call tests routines for are_urls_equal and 
677         is_robots_txt_url.
678
679 2006-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
680
681         * wget.h (wgint): Typedef to any 64-bit (or larger) type we can
682         find, not necessarily off_t or long.
683
684 2006-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
685
686         * cmpt.c (strtoll): Check for overflow and underflow without
687         relying on (technically) undefined behavior.  Don't assume that
688         strtoll_type is 64 bits wide.
689
690 2006-06-21  Hrvoje Niksic  <hniksic@xemacs.org>
691
692         * utils.c (base64_encode): Cast void pointer to char * before
693         doing arithmetic.
694
695 2006-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
696
697         * utils.c (base64_encode): Made TBL const.
698         (base64_decode): Made the base64_char_to_value table const.
699
700 2006-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
701
702         * utils.c (base64_encode): Made the DATA pointer void * so the
703         callers can pass it any kind of pointer (including both signed and
704         unsigned char pointers).
705         (base64_decode): Ditto for DEST.
706
707 2006-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
708
709         * utils.c (base64_encode): Would read past end of STR.
710         Reported by rick@eckle.org.
711
712 2006-06-13  Mauro Tortonesi  <mauro@ferrara.linux.it>
713
714         * options.h (struct options): Introduced member restrict_files_case to
715         keep track of preferences on character case restrictions for
716         filenames.
717
718         * init.c: Modified defaults and cmd_spec_restrict_file_names to
719         support character case restrictions for filenames. Added
720         test_cmd_spec_restrict_file_names unit test.
721
722         * url.c: Modified append_uri_pathel to support character case
723         restrictions for filenames. Added test_append_uri_pathel unit test.
724
725         * test.c: Added test_cmd_spec_restrict_file_names and
726         test_append_uri_pathel to the list of unit tests to run.
727
728 2006-06-12  Mauro Tortonesi  <mauro@ferrara.linux.it>
729
730         * retr.c (retrieve_from_file): Use retrieve_tree and automatically
731         turn on opt.follow_ftp in case of recursive FTP retrieval through HTTP
732         proxy.
733
734         * main.c: Automatically turn on opt.follow_ftp in case of recursive
735         FTP retrieval through HTTP proxy.
736
737 2006-06-12  Tony Lewis  <tlewis@exelana.com>
738
739         * main.c: Improved CHEN Peng's patch by proposing a simpler logic.
740
741 2006-06-12  CHEN Peng  <chenpeng@alumni.nus.edu.sg>
742
743         * main.c: Use retrieve_tree in case of recursive FTP retrieval through
744         HTTP proxy.
745
746 2006-05-25  Mauro Tortonesi  <mauro@ferrara.linux.it>
747
748         * convert.c: Added mechanisms to keep track broken links.
749
750         * convert.h: Ditto.
751
752         * wget.h: Reordered and enumerated uerr_t constants.
753
754         * recur.c: Fixes to support recursive spider mode.
755
756         * http.c: Ditto.
757
758         * main.c: Print broken links in case of recursive spider mode.
759
760         * retr.c: Changed interface of retrieve_url.
761
762         * retr.h: Ditto.
763
764         * ftp.c: Changed interface of ftp_loop.
765
766         * ftp.h: Ditto.
767
768         * res.c: Minor change to reflect changes in interface of retrieve_url.
769
770 2006-05-18  Lawrence Jones  <lawrence.jones@ugs.com>
771
772         * ftp-ls.c (ftp_parse_unix_ls): Correct size parsing, add size
773         and filename debugging output.
774
775 2006-04-28  Mauro Tortonesi  <mauro@ferrara.linux.it>
776
777         * http.c: If Content-Disposition header is present, allow unique
778         filename generation unless -nc is given. Permit to disable parsing of
779         Content-Disposition header.
780
781         * options.h: Added option --no-content-disposition to disable parsing
782         of HTTP Content-Disposition header.
783
784         * init.c: Ditto.
785         
786         * main.c: Ditto.
787
788 2006-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
789
790         * hash.c (TOLOWER): Wrap macro arg in parentheses.
791
792 2006-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
793
794         * http.c (parse_content_disposition): Doc fix.
795
796 2006-03-15  Mauro Tortonesi  <mauro@ferrara.linux.it>
797
798         * utils.c: Restricted operational semantics of frontcmp and proclist
799         from generic strings to directory names and them to subdir_p and
800         dir_matches_p respectively.  Applied George Ogata's one line patch to
801         restrict algorithm of subdir_p to full directory name matching.  Added
802         testcases for subdir_p and dir_matches_p.
803
804         * utils.h: Changed all frontcmp occurrences to subdir_p.
805         
806         * recur.c: Ditto.
807         
808         * test.c: Changed type returned by test functions from char * to const
809         char *.  Added test_subdir_p and test_dir_matches_p to the list of
810         tests to run.
811
812         * http.c (test_parse_content_disposition): Changed return type from
813         char * to const char *. 
814
815 2006-03-14  Mauro Tortonesi  <mauro@ferrara.linux.it>
816
817         * recur.c (struct queue_element): Changed type of html_allowed member
818         to bool.
819         
820 2006-03-09  Mauro Tortonesi  <mauro@ferrara.linux.it>
821
822         * ftp.c (ftp_list): Try `LIST -a' command first and revert to `LIST'
823         in case of failure.
824
825 2006-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
826
827         * hash.c (TOLOWER): Fix definition when STANDALONE.
828         Reported by Beni Serfaty.
829
830 2006-03-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
831
832         * http.c (http_loop): Fixed recursive HTTP retrieval.
833
834 2006-02-28  Hrvoje Niksic  <hniksic@xemacs.org>
835
836         * http.c (extract_param): Declare extern so it can be used from
837         other files.
838         (extract_param): Return error for empty name.
839
840 2006-02-28  Hrvoje Niksic  <hniksic@xemacs.org>
841
842         * url.c (find_last_char): Define in terms of memrchr.
843
844         * cmpt.c (memrchr): Define it on systems that don't have it.
845
846         * http.c (extract_param): New function for parsing header values
847         with parameters.
848         (parse_content_disposition): Use it.  Don't allow slashes and
849         backslashes in the file name.
850
851 2006-02-27  Hrvoje Niksic  <hniksic@xemacs.org>
852
853         * url.c (path_simplify): Don't preserve ".." at beginning of path.
854         Suggested by Frank McCown.
855
856 2006-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
857
858         * http.c (gethttp): Only use FILE.N.html if FILE.html exists.
859
860 2006-02-09  Hrvoje Niksic  <hniksic@xemacs.org>
861
862         * mswindows.c (run_with_timeout): Made thread_hnd non-static.
863
864 2006-02-05  Hrvoje Niksic  <hniksic@xemacs.org>
865
866         * retr.c (sleep_between_retrievals): Sleep at a minimum of 1/2 of
867         the specified wait period.
868
869 2006-02-03  Hrvoje Niksic  <hniksic@xemacs.org>
870
871         * utils.c (number_to_string): Don't use sprintf for printing
872         WGINT_MIN; simply divide n by 10 and defer printing the last
873         digit.
874         (number_to_string): Removed the SPRINTF_WGINT macro.
875
876 2006-02-03  Mauro Tortonesi  <mauro@ferrara.linux.it>
877
878         * http.c: Fixed support for Content-Disposition header.
879
880         * test.c: Added test_parse_content_disposition to the list of unit
881         tests to run.
882
883 2006-02-02  Hrvoje Niksic  <hniksic@xemacs.org>
884
885         * hash.c: Don't define countof if it's already defined.
886
887         * hash.c: Obtain the definition of uintptr_t when standalone.
888
889 2006-01-30  Mauro Tortonesi  <mauro@ferrara.linux.it>
890
891         * http.c: Changed output format. Removed excessively verbose debugging
892         output.
893
894 2005-12-07  Mauro Tortonesi  <mauro@ferrara.linux.it>
895
896         * http.c: Fixed pre-download verbose output which was broken by 
897         HTTP code refactoring.
898
899 2005-11-23  Mauro Tortonesi  <mauro@ferrara.linux.it>
900
901         * http.c: Refactored HTTP code.  If -O is not used, the new code
902         delays the choice of the file name where the downloaded resource
903         will be saved until the HTTP headers have been retrieved.
904         Added support for Content-Disposition header. 
905
906 2005-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
907
908         * hash.c (INVALID_PTR): Use uintptr_t instead of unsigned long.
909         (hash_pointer): Don't assume a pointer fits in `unsigned long'.
910
911 2005-11-02  Mauro Tortonesi  <mauro@ferrara.linux.it>
912
913         * Makefile.in: Removed support for unit testing (now it is in
914         tests/Makefile.in).
915
916 2005-10-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
917
918         * Makefile.in: Added basic support for unit testing.
919
920         * test.c: Ditto.
921         
922         * test.h: Ditto.
923         
924 2005-10-13  Daniel Stenberg  <daniel@haxx.se>
925
926         * http-ntlm.c (ntlm_output): Fixed buffer overflow vulnerability.
927
928 2005-10-09  Russ Allbery  <rra@stanford.edu>
929
930         * snprintf.c: Remove round to round_int and pow10 to pow10_int, to
931         avoid warnings from GCC 4.0.
932
933 2005-10-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
934
935         * retr.c: Changed semantics of no_proxy_match.
936
937 2005-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
938
939         * main.c (main): Don't print the summary if nothing has been downloaded.
940
941 2005-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
942
943         * retr.c (retr_rate): Rename parameter from MSECS to SECS since it
944         no longer holds milliseconds.
945
946 2005-09-01  Hrvoje Niksic  <hniksic@xemacs.org>
947
948         * progress.c: Introduce symbolic constants for "magic" values of
949         0.2 and 0.9, REFRESH_INTERVAL and ETA_REFRESH_INTERVAL.
950
951 2005-08-27  Hrvoje Niksic  <hniksic@xemacs.org>
952
953         * cmpt.c (strtoll): Correctly handle strtoll("0x", ptr, 0) and
954         strtoll("0x<nonhexchar>", ptr, 0) -- in both cases *ptr must be
955         set to the position of 'x', not after it.
956
957 2005-08-27  Hrvoje Niksic  <hniksic@xemacs.org>
958
959         * hash.c (hash_table_map): Rename to hash_table_for_each and
960         update callers.
961         Document the meaning of the callback's return value.
962         (hash_table_iterate): New function.
963         (hash_table_iter_next): Likewise.
964         Update most places that used hash_table_for_each to use the
965         iteration, which doesn't require a temporary function with
966         explicit state management.
967
968 2005-08-26  Albert Chin  <wget@mlists.thewrittenword.com>
969
970         * Makefile.in: Use @datadir@.  Define localedir as $(datadir)/locale.
971
972 2005-08-26  Jeremy Shapiro  <jnshapiro@gmail.com>
973
974         * openssl.c (ssl_init): Set SSL_MODE_AUTO_RETRY.
975
976 2005-08-23  Hrvoje Niksic  <hniksic@xemacs.org>
977
978         * host.c (address_list_from_ipv4_addresses): Use IP_INADDR_DATA.
979
980 2005-08-12  Hrvoje Niksic  <hniksic@xemacs.org>
981
982         * wget.h: Renamed strtoll_return to strtoll_type.
983
984 2005-08-11  Hrvoje Niksic  <hniksic@xemacs.org>
985
986         * progress.c (eta_to_human_short): Switch to days when printing
987         more than 48h rather than 100h.  (It's not immediately apparent
988         how many days there are in 83h.)
989
990 2005-08-11  Hrvoje Niksic  <hniksic@xemacs.org>
991
992         * cmpt.c (strtoll): Define it if missing on the system and if Wget
993         needs it.
994
995         * mswindows.c (str_to_int64): Move to cmpt.c and rename to strtoll.
996
997 2005-08-10  Hrvoje Niksic  <hniksic@xemacs.org>
998
999         * host.c (print_address): Always use inet_ntop when IPv6 is
1000         enabled.
1001
1002         * host.h (ip_address): Simplify the data union.
1003
1004 2005-08-09  Hrvoje Niksic  <hniksic@xemacs.org>
1005
1006         * mswindows.c (inet_ntop): Also handle IPv4 addresses for
1007         completeness.
1008
1009 2005-08-09  Hrvoje Niksic  <hniksic@xemacs.org>
1010
1011         * http.c (gethttp): Don't read more than the amount of data
1012         specified by the content-length header.
1013
1014 2005-08-09  Vasil Dimov  <vd@datamax.bg>
1015
1016         * ftp.c (getftp): Don't free RESPLINE if ftp_response returns a
1017         status other than FTPOK.
1018
1019 2005-08-04  Giuseppe Bonacci  <g.bonacci@libero.it>
1020
1021         * ftp-ls.c (ftp_parse_unix_ls): Remember the position of the
1022         previous token instead of backtracking back to it.
1023
1024 2005-07-08  Gisle Vanem  <giva@bgnett.no>
1025
1026         * mswindows.h: Include process.h to get getpid() declaration.
1027
1028 2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
1029
1030         * utils.c (aprintf): Use vasprintf where available.
1031
1032 2005-07-08  Hrvoje Niksic  <hniksic@xemacs.org>
1033
1034         * url.c (rewrite_shorthand_url): Simplify code using aprintf and
1035         strspn.
1036
1037 2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
1038
1039         * gnutls.c (ssl_check_certificate): Check for the validity of the
1040         presented X509 certificate.
1041
1042 2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
1043
1044         * openssl.c (ssl_check_certificate): Print custom error messages
1045         for frequent X509 certificate problems.
1046
1047 2005-07-07  Hrvoje Niksic  <hniksic@xemacs.org>
1048
1049         * mswindows.h: Define an alias for stat and fstat, as requested by
1050         config-compiler.h.
1051         (gai_strerror): Define to windows_strerror if NEED_GAI_STRERROR is
1052         defined.
1053
1054 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
1055
1056         * mswindows.h: Use strtoll where available.
1057
1058 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
1059
1060         * sysdep.h: Add a full declaration of fnmatch.h.
1061
1062 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
1063
1064         * utils.c: Unconditionally include <setjmp.h>.
1065
1066 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
1067
1068         * utils.c (fnmatch_nocase): New function.
1069         (proclist): Use it instead of fnmatch when opt.ignore_case is
1070         requested.
1071         (in_acclist): Respect opt.ignore_case.
1072         (frontcmp): Respect opt.ignore_case.
1073
1074         * options.h (struct options): New flag opt.ignore_case.
1075
1076 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
1077
1078         * ptimer.c: Measure time in seconds rather than milliseconds.
1079         Adjusted all callers.
1080
1081 2005-07-06  Hrvoje Niksic  <hniksic@xemacs.org>
1082
1083         * http.c (gethttp): When freeing MESSAGE, take into account that
1084         it can be NULL.
1085
1086 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
1087
1088         * cmpt.c (timegm): Handle years after 2099.
1089
1090 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
1091
1092         * cmpt.c (timegm): Remove unused variable.
1093
1094 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
1095
1096         * cmpt.c (timegm): Don't call mktime; simply count the seconds
1097         between 1970-01-01 and the specified date.
1098
1099 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
1100
1101         * wget.h (or): Define HAVE_SSL when either HAVE_OPENSSL or
1102         HAVE_GNUTLS are defined.
1103
1104         * gnutls.c: New file.
1105
1106 2005-07-05  Hrvoje Niksic  <hniksic@xemacs.org>
1107
1108         * http.c (gethttp): Don't print the request write error message
1109         twice.
1110
1111 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
1112
1113         * openssl.c (openssl_errstr): Instead of always using a large
1114         static buffer, only allocate the error string when there is an
1115         actual error.
1116
1117 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
1118
1119         * xmalloc.c (debugging_free): Prefix hex pointer value with "0x"
1120         when printing.
1121
1122 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
1123
1124         * utils.c (NEXT_BASE64_CHAR): Rename to NEXT_CHAR and simplify to
1125         get the next non-whitespace character.
1126
1127 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
1128
1129         * utils.c (base64_decode): Don't silently tolerate non-base64
1130         non-white-space characters in the base64 stream.
1131
1132 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
1133
1134         * connect.c (LAZY_RETRIEVE_INFO): Make last_tick unsigned to match
1135         transport_map_modified_tick.
1136
1137 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
1138
1139         * config-post.h (alloca): Updated declaration to not enumerate all
1140         Windows compilers.
1141
1142 2005-07-04  Hrvoje Niksic  <hniksic@xemacs.org>
1143
1144         * openssl.c (openssl_errstr): Separate error messages with "; ".
1145
1146 2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
1147
1148         * ftp.c (getftp): Ditto.
1149
1150         * http.c (gethttp): Use fd_errstr.
1151
1152         * connect.c (fd_register_transport): Restructure parameters to
1153         include only a single structure that describes transport
1154         implementation.
1155
1156         * openssl.c (openssl_errstr): New function: dump SSL error strings
1157         into a static buffer and return a pointer to the buffer.
1158
1159         * connect.c (fd_errstr): New function; returns transport-specific
1160         error message, or strerror(errno) if transport doesn't supply one.
1161
1162 2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
1163
1164         * mswindows.h: Also wrap accept() and listen().
1165
1166 2005-07-03  Hrvoje Niksic  <hniksic@xemacs.org>
1167
1168         * url.c (path_end): Skip separators appropriate for the scheme.
1169         (strpbrk_or_eos): Remove gcc-specific version, as the optimization
1170         it tried to perform no longer applies.
1171
1172 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
1173
1174         * host.c: Don't include "connect.h" now that we no longer have
1175         socket_has_inet6.
1176
1177 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
1178
1179         * host.c: Remove extraneous definition of netdb.h.
1180
1181 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
1182
1183         * http.c (gethttp): Skip error message body in the keep-alive
1184         case.
1185
1186 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
1187
1188         * url.c (url_parse): Would crash when parsing fragments.  Support
1189         fragments for FTP URLs too.
1190
1191 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
1192
1193         * version.c: Don't use "cvs" in version name, since we're not
1194         using CVS anymore.
1195
1196 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
1197
1198         * progress.c (create_image): Ditto.
1199
1200         * retr.c (retr_rate): Display smaller rate numbers with greater
1201         precision.
1202
1203 2005-07-02  Hrvoje Niksic  <hniksic@xemacs.org>
1204
1205         * http.c (response_head_terminator): Minor optimization.
1206
1207         * retr.c (fd_read_hunk): Call terminator with pointer to the start
1208         of the data and the pointer to the current data.  Changed all
1209         callers.
1210
1211 2005-07-01  Hrvoje Niksic  <hniksic@xemacs.org>
1212
1213         * url.c (url_parse): Make sure u->params is not initialized for
1214         http/https URLs.
1215         (url_parse): Don't crash on garbage following []-delimited IPv6
1216         addresses.
1217
1218 2005-07-01  Hrvoje Niksic  <hniksic@xemacs.org>
1219
1220         * main.c (print_help): Don't refer to the non-existent -nr in
1221         description of --mirror.
1222
1223 2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
1224
1225         * host.c (pretty_print_address): Renamed to just print_address.
1226         Clarify documentation.
1227
1228 2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
1229
1230         * http.c (gethttp): Explicitly document the different cases when
1231         generating the Host header.
1232
1233 2005-06-30  Hrvoje Niksic  <hniksic@xemacs.org>
1234
1235         * host.c (pretty_print_address): Handle error result from
1236         inet_ntop.
1237
1238 2005-06-30  Gisle Vanem  <giva@bgnett.no>
1239
1240         * mswindows.c (inet_ntop): New function.  Print IPv6 addresses
1241         using WSAAddressToString.
1242
1243 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1244
1245         * progress.c (dot_update): Remove unused variable row_qty.
1246
1247 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
1248
1249         * main.c: Check for both SIGHUP and SIGUSR1 before using them.
1250
1251 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
1252
1253         * utils.c: Unconditionally include locale.h.
1254
1255 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
1256
1257         * ptimer.c: Include sys/time.h to get struct timeval.
1258
1259 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
1260
1261         * wget.h: Remove obsolete definition of with_thousand_seps_sum.
1262
1263 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
1264
1265         * gnu-md5.h: Unconditionally include limits.h.
1266
1267 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
1268
1269         * utils.c (random_number): Use lrand48 if available.
1270         (random_float): Use drand48 if available.
1271
1272 2005-06-29  Hrvoje Niksic  <hniksic@xemacs.org>
1273
1274         * main.c (secs_to_human_time): Use print_decimal when printing
1275         total download time in seconds.
1276
1277         * progress.c (print_row_stats): Use it to print total download
1278         time at the end of the download.
1279         (create_image): Ditto.
1280
1281         * utils.c (print_decimal): New function; print small decimal
1282         numbers with more precision than large ones.
1283
1284         * progress.c (print_row_stats): New function.  Print ETA after the
1285         download rate at the end of each row.
1286
1287 2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
1288
1289         * init.c (parse_line): Check for alphanumerics.
1290
1291 2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
1292
1293         * (dot_create): Remove unnecessary casts.
1294
1295 2005-06-28  Hrvoje Niksic  <hniksic@xemacs.org>
1296
1297         * ftp.c (getftp): Delete trailing newlines from LIST output so
1298         lines don't come out with trailing \015\012 with -S.
1299
1300 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1301
1302         * mswindows.h: Remove superfluous includes.
1303
1304 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1305
1306         * config-post.h (alloca): Amend alloca declaration to take care of
1307         all Win32 compilers, not just MSVC and MinGW.
1308
1309 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1310
1311         * utils.c (get_grouping_data): Force separator to "." rather than
1312         " " when "," is taken.
1313
1314 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1315
1316         * wget.h (PTR_FORMAT): Cast the result of sizeof to int before
1317         passing it to printf's %*.
1318
1319         * retr.h: Declare output_stream and output_stream_regular.
1320
1321         * ftp.h: Declare ftp_last_respline.
1322
1323         * convert.h: Declare dl_url_file_map.
1324
1325         * http.h: New file.
1326
1327 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1328
1329         * cookies.c: Make cookies_now static.
1330
1331 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1332
1333         * utils.c (human_readable): Remove intermediary cast to long; MSVC
1334         has problems casting *unsigned* __int64 to double.
1335
1336 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1337
1338         * sysdep.h: Use the system-provided fnmatch by default.
1339
1340 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1341
1342         * http.c (mktime_from_utc): Renamed to timegm and moved to cmpt.c.
1343         Don't compile it if GNU timegm is available.
1344         (http_atotm): Use timegm.
1345
1346 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1347
1348         * http.c (http_atotm): Correctly query the old locale value.
1349
1350 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1351
1352         * config-post.h (alloca): Don't #define alloca under MinGW32,
1353         which defines it in malloc.h, included from mswindows.h.
1354
1355 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1356
1357         * utils.c (get_grouping_data): Force the use of separators in C
1358         locale.
1359
1360 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1361
1362         * main.c (i18n_initialize): Set all locale categories.
1363
1364         * http.c (http_atotm): Temporarily set locale to "C".
1365
1366 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1367
1368         * http.c (gethttp): Improve "POST data file missing" error
1369         message.
1370
1371 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1372
1373         * progress.c (set_progress_implementation): Type COLON as const
1374         char *.
1375
1376 2005-06-27  Hrvoje Niksic  <hniksic@xemacs.org>
1377
1378         * utils.c (with_thousand_seps): Handle negative numbers.
1379
1380 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1381
1382         * progress.c (create_image): Mark the "eta" string for translation.
1383
1384 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1385
1386         * html-url.c (get_urls_file): Don't explicitly set entry->next to
1387         NULL since entry is already zeroed out.
1388
1389 2005-06-26  Gisle Vanem  <giva@bgnett.no>
1390
1391         * mswindows.h: Define gai_strerror under MinGW.
1392
1393 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1394
1395         * utils.c (with_thousand_seps): Correctly implement thousand seps
1396         consisting of more than one character.
1397
1398 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1399
1400         * main.c (secs_to_human_time): Ditto.
1401
1402         * progress.c (create_image): Print more exact duration of very
1403         short downloads.
1404
1405         * main.c (secs_to_human_time): Don't translate time suffixes "h",
1406         "m", and "s", which are not strictly SI, but are "accepted for use
1407         with SI".
1408         (secs_to_human_time): Print really small intervals as 0s, not
1409         0.00s.
1410
1411 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1412
1413         * config-post.h: Replace the alloca declaration with the one from
1414         the latest Autoconf manual.  This should remove a warning with GCC
1415         on AIX.
1416
1417 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1418
1419         * ftp.c (getftp): Always invoke SIZE, not only when continuing a
1420         download.
1421
1422         * main.c (main): Ditto here.
1423
1424         * progress.c (create_image): When the download is finished, print
1425         how long it took.
1426
1427 2005-06-26  Hrvoje Niksic  <hniksic@xemacs.org>
1428
1429         * main.c (main): Print the downloaded and quota amounts with the
1430         "human_readable" function.
1431
1432         * ftp.c (print_length): Ditto.
1433
1434         * http.c (gethttp): Don't display thousand separators.
1435
1436         * utils.c (with_thousand_seps): Rewritten to respect locale
1437         settings and to be type size agnostic.
1438
1439 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1440
1441         * utils.c (human_readable): Divide with 1024 instead of shifting
1442         so the operation can work with non-integer N.
1443
1444 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1445
1446         * progress.c (eta_to_human): New logic for more human-readable
1447         ETA.
1448
1449 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1450
1451         * utils.c (with_thousand_seps_sum): Decrease buffer size so it
1452         cannot overrun add_thousand_seps's buffer.
1453
1454 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1455
1456         * utils.c (SPRINTF_WGINT): The correct format is %I64d, not just
1457         %I64.
1458
1459 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1460
1461         * http.c (http_loop): Don't warn about wildcards in HTTP URLs if
1462         globbing isn't requested in the first place.
1463
1464         * retr.c (retrieve_url): Temporarily turn off globbing when
1465         processing HTTP->FTP redirects.
1466
1467 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1468
1469         * utils.c (with_thousand_seps_sum): Now defined only if
1470         SUM_SIZE_INT is double.
1471
1472         * wget.h (SUM_SIZE_INT): Instead of bothering with long, long
1473         long, __int64, and friends, simply either use wgint or double, end
1474         of story.  Since we know how to print either, we no longer need
1475         LARGE_INT_FMT.
1476
1477         * sysdeps.h (LARGE_INT): Renamed to SUM_SIZE_INT to better reflect
1478         its intent, and moved to wget.h.
1479
1480 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1481
1482         * Makefile.in: No need to clean .libs.
1483
1484 2005-06-25  Hrvoje Niksic  <hniksic@xemacs.org>
1485
1486         * cookies.c (parse_set_cookies): Cast pointer subtraction to int
1487         before using it with %d; AIX compiler warns on this.
1488         Reported by Jens Schleusener.
1489
1490 2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
1491
1492         * http.c (gethttp): Don't prepend / here.
1493
1494         * cookies.c (cookie_handle_set_cookie): Prepend / to PATH.
1495         (cookie_header): Ditto.
1496
1497 2005-06-24  Hrvoje Niksic  <hniksic@xemacs.org>
1498
1499         * init.c: opt.verbose must be declared as int.
1500
1501 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
1502
1503         * cmpt.c (strpbrk): Removed.
1504         (mktime): Removed.
1505         Include <time.h>.
1506
1507 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
1508
1509         * utils.c (read_file): Ditto.
1510
1511         * main.c (main): Use struct_fstat.
1512
1513         * mswindows.h (struct_fstat): Define a struct_fstat to deal with
1514         the fact that Borland 5.5 has 64-bit stat, but not 64-bit fstat!
1515
1516 2005-06-23  Hrvoje Niksic  <hniksic@xemacs.org>
1517
1518         * sysdep.h: Remove code that deals with Watcom.
1519
1520 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1521
1522         * all: Use bool instead of int and false/true instead of 0/non-0
1523         for boolean variables and values.
1524
1525 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1526
1527         * sysdep.h: Include the stdbool.h/_Bool/bool blurb from Autoconf.
1528
1529 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1530
1531         * init.c (cmd_lockable_boolean): Removed.
1532
1533 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1534
1535         * cookies.c (struct cookie): Use 1-bit bitfields for booleans
1536         which makes the structure takes less space at no cost in
1537         complexity.
1538
1539 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1540
1541         * Makefile.in ($(OBJ)): Add the config.h dependency.
1542
1543 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1544
1545         * openssl.c, connect.c, host.c: Replace instances of #ifdef
1546         ENABLE_DEBUG if (opt.debug) {...} #endif with IF_DEBUG {...}.
1547
1548         * main.c: Rename the IF_DEBUG defined here to WHEN_DEBUG.
1549
1550         * wget.h (IF_DEBUG): New macro.
1551         (DEBUGP): Define in terms of IF_DEBUG.
1552
1553 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1554
1555         * http.c (gethttp): Only handle --set-cookies (and assert that
1556         cookie jar exists) if opt.cookies is true.  Failure to do so
1557         triggered the assert when --no-cookies was used and the server
1558         sent a Set-Cookie header.  Ouch!
1559
1560 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1561
1562         * connect.c (select_fd): Expect select() to exist.
1563
1564         * utils.c (xsleep): Always use select() as sleep fallback on
1565         non-Windows platforms.
1566
1567         * ptimer.c: Delete the implementation of PTIMER_TIME.
1568
1569         * main.c: Assume existence of signal(), test for different signal
1570         names instead.
1571
1572         * cmpt.c: Better document reasons why certain functions are
1573         included.
1574
1575 2005-06-22  Hrvoje Niksic  <hniksic@xemacs.org>
1576
1577         * Makefile.in: Remove the manually maintained dependency list;
1578         make all object files depend on every header.
1579
1580 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
1581
1582         * hash.c: Rename "mapping" to "cell" to avoid confusion with the
1583         term "mapping" (or "map") sometimes being used for the entire hash
1584         table.  Also rename "non-empty" to "occupied" for easier reading
1585         of if (!NON_EMPTY (...)) ... .
1586
1587 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
1588
1589         * main.c, ptimer.c, sysdep.h, utils.c: Use #elif to simplify reading of
1590         chained if-else-else-else-... statements.
1591
1592 2005-06-20  Hrvoje Niksic  <hniksic@xemacs.org>
1593
1594         * all: Return type of signal handlers is `void'.  Include signal.h
1595         unconditionally.
1596
1597         * all: Don't explicitly cast values returned by malloc.  We no
1598         longer support ancient compilers that don't declare malloc, and we
1599         never supported C++ builds.
1600
1601 2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
1602
1603         * all: Don't declare errno.  Include both time.h and sys/time.h,
1604         as long as sys/time.h exists.  Don't dereference function pointers
1605         when invoking the functions they point to.
1606
1607         * cmpt.c (memmove): Remove function mandated by C89.
1608         (strerror): Ditto.
1609         (strstr): Ditto.
1610
1611         * all: Undo the K&R-ization changes from 2005-05-03.
1612
1613         * all: Remove support for K&R compilers: use C89 function
1614         declarations, remove definition of PARAMS, remove support for
1615         varargs, and remove ansi2knr.  Assume the presence of time.h,
1616         string.h, and other headers mandated by C89.
1617
1618 2005-06-19  Hrvoje Niksic  <hniksic@xemacs.org>
1619
1620         * init.c (cmd_lockable_boolean): Don't recognize literal "2" and
1621         "-1" values; unlike 0 and 1, those should never be exposed to the
1622         user.  Update the error message to be more self-consistent, as
1623         proposed by Benno Schulenberg.
1624
1625 2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
1626
1627         * http.c (gethttp): Don't free "head" before using it to save
1628         headers.
1629
1630 2005-06-18  Hrvoje Niksic  <hniksic@xemacs.org>
1631
1632         * http.c (gethttp): When -E is in use, check for file existence
1633         after appending ".html" to the name and modify the file name if
1634         necessary.
1635
1636 2005-06-17  Hrvoje Niksic  <hniksic@xemacs.org>
1637
1638         * connect.c (socket_has_inet6): Removed.
1639
1640         * host.c (lookup_host): Don't use the AI_ADDRCONFIG getaddrinfo
1641         hint.
1642
1643 2005-06-16  Hrvoje Niksic  <hniksic@xemacs.org>
1644
1645         * init.c (cmd_lockable_boolean): Improve the error message so it
1646         lists the more useful values first.
1647
1648 2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
1649
1650         * http.c (gethttp): Also report the system error when the POST
1651         data file is missing.
1652
1653 2005-06-15  Benno Schulenberg  <benno@nietvergeten.nl>
1654
1655         * ftp.c, http.c, connect.c, cookies.c, html-url.c, init.c, res.c:
1656         Gettext-ize messages that were previously missed.
1657
1658 2005-06-15  Hrvoje Niksic  <hniksic@xemacs.org>
1659
1660         * host.h (ip_address): Remove the trailing comma from the type
1661         enum in the no-IPv6 case.
1662
1663         * main.c (struct cmdline_option): Remove the trailing comma from
1664         the enum.
1665
1666         Reported by Jens Schleusener.
1667
1668 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
1669
1670         * url.c (strpbrk_or_eos): Check for a recent GCC version before
1671         using the statement-as-expression extension.
1672
1673 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
1674
1675         * http.c (gethttp): Don't attempt to "skip short body" if we're
1676         issuing a HEAD request (in which case the response head is not
1677         followed by a body).
1678
1679 2005-05-30  Hrvoje Niksic  <hniksic@xemacs.org>
1680
1681         * init.c (cmd_spec_header): Don't split the string along the
1682         commas using cmd_vector; just append the new value using
1683         vec_append instead.
1684
1685         * utils.c (vec_append): New function.
1686
1687 2005-05-27  Andreas Beckmann  <debian@abeckmann.de>
1688
1689         * html-url.c (tag_handle_link): Mark the content from the <link
1690         src="..."> tag as expecting HTML.
1691
1692 2005-05-24  Hrvoje Niksic  <hniksic@xemacs.org>
1693
1694         * http.c (http_atotm): Document the origin of the "cookie date"
1695         format.
1696
1697 2005-05-21  Hrvoje Niksic  <hniksic@xemacs.org>
1698
1699         * init.c (setval_internal): Report exact command name alongside
1700         the "display name".
1701
1702 2005-05-18  Hrvoje Niksic  <hniksic@xemacs.org>
1703
1704         * cookies.c (update_cookie_field): Explicitly cast -1 to time_t to
1705         cope with systems where time_t is unsigned.
1706
1707         * cookies.c: Remove unnecessary casts to time_t from values
1708         already of that type.
1709
1710 2005-05-17  Hrvoje Niksic  <hniksic@xemacs.org>
1711
1712         * ftp.c (ftp_loop_internal): Same here.
1713
1714         * http.c (http_loop): Don't clobber the file when -c is specified
1715         and the first attempt to retrieve the file fails.
1716
1717 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
1718
1719         * openssl.c (ssl_check_certificate): Print all issues with a
1720         certificate.
1721
1722 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
1723
1724         * ftp-basic.c: Don't xfree() the line returned by ftp_response if
1725         the returned code is not FTPOK.
1726
1727 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
1728
1729         * init.c (cleanup): Don't free the non-existent opt.ftp_acc.  Free
1730         the SSL-related stuff.
1731
1732 2005-05-16  Hrvoje Niksic  <hniksic@xemacs.org>
1733
1734         * ftp.c (print_length): Consistently print \n at end of the
1735         "Length" line.
1736
1737 2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
1738
1739         * openssl.c (ssl_connect): Announce the beginning and the end of
1740         the SSL handshake when in debug mode.
1741
1742         * wget.h (PTR_FORMAT): New macro for easier printing of pointer
1743         values.  Use %0*lx along with PTR_FORMAT instead of %p.
1744
1745 2005-05-14  Hrvoje Niksic  <hniksic@xemacs.org>
1746
1747         * http.c (gethttp): Would forget to close the connection when
1748         keep_alive was not used.
1749
1750 2005-05-13  Hrvoje Niksic  <hniksic@xemacs.org>
1751
1752         * openssl.c (pattern_match): Document the code that decides
1753         whether "*" matches ".".
1754
1755 2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
1756
1757         * ftp-ls.c (ftp_index): Use %d to print the port number, which is
1758         now int.
1759         From Steven M. Schweda's VMS patches.
1760
1761 2005-05-12  Hrvoje Niksic  <hniksic@xemacs.org>
1762
1763         * url.c (rewrite_shorthand_url): Don't rewrite "https://host" to
1764         "ftp://https//host" when SSL is not used.
1765
1766 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
1767
1768         * openssl.c (ssl_check_server_identity): Renamed to
1769         ssl_check_certificate because it does more than just checking the
1770         server's identity.
1771         (ssl_check_certificate): Tell the user about
1772         --no-check-certificate.
1773
1774 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
1775
1776         * openssl.c (ssl_init): Always use SSL_VERIFY_NONE, so that the
1777         handshake finishes even if the certificate is invalid.  That way
1778         ssl_check_server_identity can provide better diagnostics on why
1779         the verification failed.
1780
1781 2005-05-11  Hrvoje Niksic  <hniksic@xemacs.org>
1782
1783         * openssl.c (pattern_match): New function.
1784         (ssl_check_server_identity): Treat peer certificate common name as
1785         wildcard.
1786
1787 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
1788
1789         * openssl.c (ssl_check_server_identity): Print certificate subject
1790         and issuer.
1791
1792 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
1793
1794         * res.c (res_register_specs): Correctly pass pointers to
1795         hash_table_get_pair.
1796
1797 2005-05-10  Hrvoje Niksic  <hniksic@xemacs.org>
1798
1799         * http.c (gethttp): Call ssl_check_server_identity.
1800
1801         * openssl.c (ssl_check_server_identity): New function, verifies
1802         that the host name in the certificate matches the actual host
1803         name.
1804         (verify_cert_callback): Removed, since it didn't do anything
1805         except returning the preverify_ok argument.
1806
1807         * connect.c (fd_transport_context): Allow retrieval of the context
1808         pointer registered with fd_register_transport.
1809
1810 2005-05-09  Hrvoje Niksic  <hniksic@xemacs.org>
1811
1812         * openssl.c (verify_cert_callback): Renamed from verify_callback.
1813         Always return the received "ok" value.  Print the X509 name in
1814         debug mode.
1815         (ssl_init): Enable partial writes in SSL context.
1816
1817 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
1818
1819         * http.c (http_loop): Check for wildcards in the URL path
1820         component, not in the whole URL.
1821
1822         * ftp.c (ftp_loop): Check for wildcards in URL path before
1823         unescaping, so the users can escape globbing metacharacters with %
1824         escapes.
1825
1826 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
1827
1828         * init.c (run_command): Correctly interpret the return value of
1829         parse_line.
1830         (commands): Re-alphabetize.
1831
1832 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
1833
1834         * netrc.c (parse_netrc): Explicitly check for assignment != NULL
1835         to silence warning from Borland C.
1836
1837         * url.c (sync_path): Don't unnecessarily increment p.
1838         (url_parse): Don't unnecessarily set url_encode to NULL just
1839         prior to return from the function.
1840
1841 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
1842
1843         * log.c (escnonprint_internal): Place variable declarations
1844         before other statements.
1845
1846 2005-05-08  Hrvoje Niksic  <hniksic@xemacs.org>
1847
1848         * html-url.c: Include recur.h.
1849
1850         * http.c (request_new): Define as accepting no args.
1851
1852 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
1853
1854         * url.c (strpbrk_or_eos): Made inline.  Use strchr(s, '\0') for
1855         finding the NUL char position.
1856
1857 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
1858
1859         * url.c (decide_copy_method): Renamed to char_needs_escaping.
1860         Since it now returns only two possible values, change it to return
1861         boolean (int).
1862
1863 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
1864
1865         * ftp-basic.c (ftp_request): Prevent newlines in VALUE causing
1866         inadvertent sending of multiple FTP commands.
1867
1868 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
1869
1870         * url.c (decide_copy_method): Never cause reencode_escapes to
1871         decode % escapes; it is too intrusive and breaks some servers.
1872
1873 2005-05-07  Hrvoje Niksic  <hniksic@xemacs.org>
1874
1875         * http.c (gethttp): When tunnelling SSL traffic over proxy with
1876         CONNECT, we're really talking to the remote server directly.
1877         Because of this, the request-line argument must be the URL path
1878         rather than the whole URL, as it would be when using regular
1879         proxies.
1880         Reported by Charles Lane.
1881
1882 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
1883
1884         * init.c (cmd_spec_useragent): Allow empty User-Agent.
1885
1886         * http.c (gethttp): Don't print "unknown authentication scheme"
1887         for failed Basic authentication.
1888         (SET_USER_AGENT): Don't set user-agent if opt.useragent is empty.
1889         (gethttp): Use alloca for allocation of www_authenticate.
1890
1891 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
1892
1893         * main.c (print_help): Fix wording of --secure-protocol help text.
1894
1895 2005-05-06  Hrvoje Niksic  <hniksic@xemacs.org>
1896
1897         * cmpt.c (strstr): Updated from glibc 2.3.5.
1898
1899 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1900
1901         * http.c (http_atotm): Zero out the whole struct tm being passed
1902         to strptime.
1903
1904 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1905
1906         * main.c (main): Propagate option name to setoptval.
1907
1908         * init.c (setoptval): Accept another argument, OPTNAME.  Propagate
1909         that argument as the option name independently of the actual
1910         command, determined by command_by_name(com).
1911
1912 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1913
1914         * init.c (parse_line): Make the return value indicate whether
1915         there was a syntax error or a setter failed.
1916         (run_wgetrc): Return an indication on whether an error has been
1917         encountered.
1918         (initialize): Abort if there have been errors running either
1919         .wgetrc file.
1920
1921 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1922
1923         * log.c (copy_and_escape): Slightly reduce code repetition between
1924         the two loops.
1925
1926 2005-05-05  Charles C.Fu  <ccwf@bacchus.com>
1927
1928         * utils.c (proclist): Strip leading slash when calling fnmatch
1929         too, otherwise wildcard comparisons always fail.
1930
1931 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1932
1933         * utils.c (touch): Set access time to current time.
1934
1935 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1936
1937         * url.c (url_unescape): Don't unescape %00, it effectively
1938         truncates the string.
1939
1940 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1941
1942         * log.c (copy_and_escape): Replace the FOR_URI argument with a
1943         slightly more general mechanism for specifying different kinds of
1944         escape.
1945
1946 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1947
1948         * ftp-basic.c (ftp_response): Fix printing FTP server response.
1949
1950 2005-05-05  Hrvoje Niksic  <hniksic@xemacs.org>
1951
1952         * retr.c (limit_bandwidth_reset): Reset sleep_adjust.
1953         (limit_bandwidth): Don't allow huge "adjustment" values that
1954         result from being suspended for a while.
1955
1956 2005-05-04  Hrvoje Niksic  <hniksic@xemacs.org>
1957
1958         * wget.h: If gettext was found but libtintl.h wasn't, declare
1959         gettext's return type to avoid type mismatches.
1960
1961 2005-05-03  Hrvoje Niksic  <hniksic@xemacs.org>
1962
1963         * url.c (url_parse): Rename label `error' to avoid conflict with
1964         identifier.
1965
1966         * retr.c (fd_read_body): Rename label `out' to avoid conflict with
1967         identifier.
1968         (fd_read_hunk): Use explicit double constant.
1969         (retrieve_from_file): Don't use string concatenation.
1970         (sleep_between_retrievals): Make sure xsleep is called with a
1971         `double' argument.
1972         (no_proxy_match): Define as static, like it is declared.
1973
1974         * progress.c (bar_create): Use 0.0 instead of 0 because K&R
1975         compilers can't automatically promote it.
1976
1977         * http-ntlm.c (ntlm_output): Replace \xHH sequences with \OOO for
1978         the sake of old compilers.
1979
1980         * ftp.c (ftp_loop_internal): Don't use string concatenation.
1981
1982         * http.c (request_send): Use explicit double constants when
1983         calling fd_read and fd_write.
1984         (post_file): Ditto.
1985         (gethttp): Ditto.
1986         (skip_short_body): Ditto.
1987
1988         * ftp-basic.c: When calling fd_write, specify the last argument as
1989         a `double' constant for the sake of K&R compilers which don't see
1990         the prototype and therefore can't promote it to double
1991         automatically.
1992
1993         * cookies.c (cookie_jar_load): Rename abort label to abort_cookie
1994         to avoid name conflict in K&R compilers.
1995
1996 2005-04-29  Hrvoje Niksic  <hniksic@xemacs.org>
1997
1998         * ptimer.c (posix_init): Since we allow _POSIX_MONOTONIC_CLOCK==0,
1999         it is not enough to check for _POSIX_MONOTONIC_CLOCK-0, we must
2000         also check for defined(_POSIX_MONOTONIC_CLOCK).
2001
2002 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
2003
2004         * ftp.c, hash.c, connect.c, host.c, http.c: Remove unreached code,
2005         such as "break" following return or abort.
2006
2007 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
2008
2009         * init.c (commands): Wrap the use of opt.random_file in #ifdef
2010         HAVE_SSL.
2011
2012 2005-04-28  Hrvoje Niksic  <hniksic@xemacs.org>
2013
2014         * http.c (gethttp): Correctly set the user agent.
2015
2016 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
2017
2018         * init.c (cmd_spec_useragent): Free the old value of
2019         opt.useragent before setting the new one.
2020
2021 2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
2022
2023         * main.c: Map --ftp-password, --http-password and --proxy-password to
2024         the new ftppassword, httppassword and proxypassword commands
2025         respectively.  Document the --user and --password options in the help
2026         string.
2027         
2028 2005-04-27  Mauro Tortonesi  <mauro@ferrara.linux.it>
2029
2030         * ftp.c: Add support for --user and --password.
2031         
2032         * http.c: Add support for --user and --password.
2033         
2034         * init.c: Deprecated ftppasswd, httppasswd, login, passwd and
2035         proxypasswd commands.  Added ftppassword, ftpuser, httppassword,
2036         password, proxypassword and user commands.
2037
2038         * main.c: Renamed --ftp-passwd to --ftp-password.  Added --ftp-user,
2039         --http-password, --password, --proxy-password and --user.  Deprecated
2040         --http-passwd and --proxy-passwd.  Added documentation for new options
2041         and removed documentation for deprecated options in the help string.
2042         
2043         * options.h (struct options): Added user and passwd members to handle
2044         --user and --password respectively.  Renamed ftp_acc and ftp_pass
2045         members to ftp_user and ftp_passwd for consistency.
2046
2047 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
2048
2049         * main.c (print_help): Advertise "DER", not "ASN1".
2050
2051 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
2052
2053         * openssl.c (init_prng): Disable the weak random seed by default.
2054
2055         * http.c (gethttp): Simplify SSL initialization; disable SSL when
2056         anything goes wrong with the initialization.
2057
2058         * options.h (struct options): New option opt.random_file.
2059
2060 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
2061
2062         * init.c: Wrap private key commands in IF_SSL.
2063
2064 2005-04-27  Hrvoje Niksic  <hniksic@xemacs.org>
2065
2066         * openssl.c (ssl_init): Ditto.
2067
2068         * options.h (struct options): Allow separate specification of key
2069         type and certificate type.
2070
2071         * init.c (cmd_spec_cert_type): Provide a "der" synonym for "asn1"
2072         certificate encoding.
2073
2074 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
2075
2076         * openssl.c: Renamed "gen_sslfunc.c" to "openssl.c" and
2077         "gen_sslfunc.h" to "openssl.h".  This reflects the intent of
2078         openssl.c encapsulating the OpenSSL-specific code.
2079
2080 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
2081
2082         * init.c: Renamed "closure" (a synonym for context in some
2083         cultures) to "place", which more accurately reflects the usage.
2084
2085 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
2086
2087         * gen_sslfunc.c (ssl_init): Use default locations for loading the
2088         certificate bundles.
2089         (ssl_init_prng): Disable the cryptographically weak PRNG
2090         initialization fallback.
2091
2092         * init.c: Renamed SSL command-line arguments and wgetrc commands.
2093         (defaults): Check the server certificate by default.
2094
2095 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
2096
2097         * cookies.c (cookie_handle_set_cookie): Delete the part of the
2098         path after the trailing slash.
2099
2100         * http.c (gethttp): Call cookie_handle_set_cookie with path that
2101         begins with '/'.
2102
2103 2005-04-26  Hrvoje Niksic  <hniksic@xemacs.org>
2104
2105         * http.c (gethttp): Call skip_short_body only if keep_alive is in
2106         use.
2107         (gethttp): Send the User-Agent header with the CONNECT request as
2108         well.
2109
2110 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
2111
2112         * main.c (option_data): Removed support for the undocumented flag
2113         --use-proxy.
2114
2115 2005-04-25  Hrvoje Niksic  <hniksic@xemacs.org>
2116
2117         * main.c (option_data): Don't treat -Y as a boolean switch; treat
2118         it as a value switch instead, so "-Y off" continues to work.
2119
2120 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
2121
2122         * utils.c (aprintf): Delete unreachable statement.
2123
2124 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
2125
2126         * host.c (cmp_prefer_ipv4): New function.
2127         (cmp_prefer_ipv6): New function.
2128         (lookup_host): Use the appropriate comparator according to
2129         opt.prefer_family.
2130
2131         * init.c: New option prefer_family.
2132
2133         * host.c (is_valid_ipv6_address): Spell NS_* constants in lower
2134         case to avoid clash with system headers.
2135         (lookup_host): Reorder the addresses so that IPv4 ones come first.
2136
2137         * utils.c (stable_sort): New function.
2138
2139 2005-04-24  Hrvoje Niksic  <hniksic@xemacs.org>
2140
2141         * connect.c (retryable_socket_connect_error): Return 0 for
2142         ENETUNREACH and EHOSTUNREACH.
2143
2144 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
2145
2146         * cmpt.c: Reenable the memmove implementation for systems that
2147         lack it.
2148
2149         * http.c (gethttp): Store the "authorized" state of the persistent
2150         connection.
2151         (request_remove_header): New function.
2152         (gethttp): Don't send the "Basic" authentication if the connection
2153         is already authorized.
2154
2155 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
2156
2157         * utils.c (base64_encode): Treat input as unsigned chars.
2158         Required for correct encoding of binary stuff.
2159
2160 2005-04-23  Hrvoje Niksic  <hniksic@xemacs.org>
2161
2162         * http-ntlm.c: Format the function definitions in an
2163         ansi2knr-friendly fashion.
2164
2165 2005-04-22  Hrvoje Niksic  <hniksic@xemacs.org>
2166
2167         * http.c (gethttp): Handle multiple WWW-Authentication headers,
2168         only one of which is recognized.  Those are sent by IIS with NTLM
2169         authorization.
2170         (create_authorization_line): Propagate information whether
2171         authorization is finished.
2172         (gethttp): Only stop authorization when it's really finished, not
2173         after fixed two steps.
2174
2175 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
2176
2177         * gen_sslfunc.c (ssl_init): Fix warning message text; mark the
2178         message as translatable.
2179
2180 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
2181
2182         * main.c (print_help): Print the EGD option outside the cluster of
2183         SSL options.
2184
2185 2005-04-21  Hrvoje Niksic  <hniksic@xemacs.org>
2186
2187         * http-ntlm.c (ntlm_output): Fix setting the domain.
2188         Suggested by Sami Krank.
2189
2190 2005-04-20  Mauro Tortonesi  <mauro@ferrara.linux.it>
2191
2192         * connect.c: Set IPV6_V6ONLY socket option when -6 switch is used.
2193
2194 2005-04-20  FUJISHIMA Satsuki  <sf@FreeBSD.org>
2195
2196         * http.c (request_set_header): Fix the check whether a new header
2197         needs to be allocated.
2198
2199 2005-04-18  Hrvoje Niksic  <hniksic@xemacs.org>
2200
2201         * utils.c (base64_encode): Use the parameter order that makes more
2202         sense.  Return the length of the base64 written.  Updated all
2203         callers.
2204
2205 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
2206
2207         * http.c (request_set_header): Free NAME when VALUE is NULL and
2208         freeing the header name is requested.
2209
2210 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
2211
2212         * snprintf.c (fmtstr): Declare VALUE as const char *.
2213         Based on patch by Russ Allbery.
2214
2215 2005-04-17  Hrvoje Niksic  <hniksic@xemacs.org>
2216
2217         * snprintf.c (fmtfp): More correct handling of significant digit
2218         count with %g -- 0.002 has one significant digit, not three.
2219
2220 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
2221
2222         * retr.c (fd_read_body): Respect read timeout with non-interactive
2223         or no progress gauge -- treat ETIMEDOUT specially only when
2224         progress_interactive.
2225         Reported by FUJISHIMA Satsuki.
2226
2227 2005-04-16  FUJISHIMA Satsuki  <sf@FreeBSD.org>
2228
2229         * http.c (gethttp): Don't use HTTP/1.0 persistent connections over
2230         proxy.
2231
2232 2005-04-16  Hrvoje Niksic  <hniksic@xemacs.org>
2233
2234         * snprintf.c: Use the PARAMS macro to handle prototypes.  Write
2235         function definitions in the ansi2knr-friendly way.
2236         (fmtstr): If string precision is specified, don't read VALUE past
2237         it.
2238         (dopr): Actually print %g and %e formats.
2239         (fmtfp): Fix a bug that caused 0.01 to be printed as 0.1.
2240         (fmtfp): Use LLONG in floating point conversions to be able to
2241         convert more digits.
2242         (fmtfp): Interpret precision as number of significant digits with
2243         %g.
2244         (fmtfp): Omit trailing decimal zeros with %g.
2245
2246         * snprintf.c: Don't include <ctype.h> because none of it is used.
2247         Include strings.h/string.h, as per Autoconf.
2248
2249 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
2250
2251         * ptimer.c: Use _POSIX_TIMERS - 0 > 0, which handles the case when
2252         _POSIX_TIMERS is defined but empty, as well as the case when it is
2253         undefined.  Do the same with the check for _POSIX_MONOTONIC_CLOCK.
2254         Suggested by Larry Jones.
2255
2256 2005-04-15  Hrvoje Niksic  <hniksic@xemacs.org>
2257
2258         * ptimer.c: Check that _POSIX_TIMERS is defined as well as > 0.
2259         Problem reported by Steven M. Schweda.
2260
2261 2005-04-14  Hrvoje Niksic  <hniksic@xemacs.org>
2262
2263         * http.c (skip_short_body): Print the skipped body data in debug
2264         mode.
2265         (skip_short_body): Don't skip more than 4k of body data.
2266         (skip_short_body): Return whether the skipping was successful.
2267         (gethttp): If skip_short_body failed, invalidate the connection.
2268
2269 2005-04-12  Gisle Vanem  <giva@bgnett.no>
2270
2271         * ftp.c (getftp): Ditto.
2272
2273         * http.c (gethttp): Open the output file in binary mode.
2274
2275 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
2276
2277         * hash.c: Conditionalize including config.h on HAVE_CONFIG_H
2278         instead of on STANDALONE.
2279
2280 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
2281
2282         * gen_sslfunc.c (ssl_print_errors): Made static.
2283         (ssl_print_errors): Eliminate potentially dangerous fixed-size
2284         error buffer.  Passing NULL to ERR_error_string causes it to use
2285         its own static buffer, which is fine for our purposes.
2286
2287         * gen_sslfunc.c: Include gen_sslfunc.h.  Make the declarations of
2288         ssl_init and ssl_conect match the actual definitions.
2289         (ssl_connect): Simply return a boolean, the SSL context is no
2290         longer useful as a return value.
2291
2292         * retr.c: Don't include SSL headers; we don't need them.
2293
2294 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
2295
2296         * config-post.h: Don't define _VA_LIST under Solaris; it breaks
2297         compilation with GCC 3.4 under Solaris 10.  (It was defined to
2298         avoid a warning with previous versions of GCC.)
2299
2300 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
2301
2302         * xmalloc.c (register_ptr): Warn the user to increase SZ prior to
2303         aborting.
2304
2305 2005-04-11  Hrvoje Niksic  <hniksic@xemacs.org>
2306
2307         * convert.c (convert_cleanup): Free converted_files.
2308
2309 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
2310
2311         * wget.h (DEBUGP): Use __builtin_expect to give a hint to GCC that
2312         opt.debug is false in the vast majority of cases.
2313
2314 2005-04-10  Hrvoje Niksic  <hniksic@xemacs.org>
2315
2316         * config-post.h: Declare alloca as void *, not char *.
2317
2318 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
2319
2320         * recur.c (download_child_p): When -p is used, (temporarily)
2321         ignore accept/reject rules for HTMLs, even when they are at the
2322         maximum recursion depth.  That is because with -p we are, if
2323         necessary, overstepping the max. depth to get the requisites.
2324
2325 2004-06-12  Larry Jones <lawrence.jones@ugsplm.com>
2326
2327         * recur.c (download_child_p): Correct the logic in check number 6:
2328         test opt.reclevel (not DEPTH) against INFINITE_RECURSION.
2329
2330 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
2331
2332         * url.c: Use "static const" in preference to "const static".
2333         Sun's cc warns that "storage class after type is obsolescent".
2334
2335         * url.c (urlchr_table): Don't mark ~ as unsafe, too many broken
2336         web sites are confused when ~ is changed to %7E.  Their servers
2337         redirect /%7Efoo/ to /~foo/, which Wget again accesses using %7E,
2338         causing further redirections, therefore looping infinitely.  See
2339         Debian bug #301624 for an example.
2340
2341 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
2342
2343         * alloca.c: Include wget.h to be able to use xmalloc.  In addition
2344         to defining malloc to xmalloc, also define free to xfree.
2345
2346 2005-04-09  Hrvoje Niksic  <hniksic@xemacs.org>
2347
2348         * http-ntlm.c (ntlm_output): Use "char", not "unsigned char" for
2349         ntlmbuf.  Our base64 functions accept char anyway.
2350         (ntlm_output): Join up the format string, since we nominally
2351         support K&R compilers.
2352         (ntlm_output): Ditto.
2353
2354 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2355
2356         * ptimer.c: Use Windows timers under Cygwin, whose POSIX timer
2357         implementation is incomplete.
2358
2359 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2360
2361         * ptimer.c (struct ptimer): Remove the unused initialized field.
2362
2363         * ptimer.c: Renamed function parameters from WT (which used to
2364         stand for wget_timer or wtimer) to PT.
2365
2366 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2367
2368         * ptimer.c (posix_init): Be smarter about choosing clocks.  In
2369         decreasing order of preference, use CLOCK_MONOTONIC,
2370         CLOCK_HIGHRES, and CLOCK_REALTIME.
2371         (ptimer_allocate): Removed.
2372
2373         * ptimer.c: Refactor the code by cleanly separating the
2374         architecture-dependent code from the architecture-independent
2375         code.
2376
2377 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2378
2379         * ptimer.c (ptimer_init): Explicitly check that
2380         _POSIX_MONOTONIC_CLOCK is *both* defined and >=0.  (Undefined
2381         symbols are >=0.)
2382
2383 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2384
2385         * ptimer.c (ptimer_diff): Fix typo affecting Windows build.
2386
2387 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2388
2389         * ptimer.c (ptimer_init): In fact, _POSIX_MONOTONIC_CLOCK needs to
2390         be >= 0.
2391
2392         * ptimer.c (ptimer_init): Check whether _POSIX_MONOTONIC_CLOCK is
2393         defined instead of whether it's greater than 0.  glibc defines it
2394         to 0, but still makes it available via sysconf.
2395
2396 2005-04-08  Hrvoje Niksic  <hniksic@xemacs.org>
2397
2398         * mswindows.c (str_to_int64): Rename OVERFLOW and UNDERFLOW to
2399         INT64_OVERFLOW and INT64_UNDERFLOW, since those names are used.
2400
2401 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
2402
2403         * ptimer.c: New file.  Move the "wtimer" functions from utils.c to
2404         this file and rename them to ptimer_.
2405
2406 2005-04-07  Hrvoje Niksic  <hniksic@xemacs.org>
2407
2408         * host.c (NO_ADDRESS): Define NO_ADDRESS only after the system
2409         headers have been included.
2410
2411 2005-04-06  Hrvoje Niksic  <hniksic@xemacs.org>
2412
2413         * http.c (pconn): Include NTLM data, which is per-connection.
2414         (known_authentication_scheme_p): Recognize NTLM authorization.
2415         (create_authorization_line): Call ntlm_input and ntlm_output.
2416
2417         * http-ntlm.c: New file, donated by Daniel Stenberg and originally
2418         written for curl, heavily modified for Wget.
2419
2420         * utils.c (base64_encode): Relocated from http.c, since it is now
2421         used by http-ntlm.c, and will possibly be used elsewhere.
2422         (base64_decode): New function, originally based on code from GNU
2423         recode.
2424
2425 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
2426
2427         * ftp.c (ftp_loop): Ditto.
2428
2429         * ftp-basic.c (ftp_pasv): Use the xzero shorthand for memset(0).
2430         (ftp_lpsv): Ditto.
2431
2432 2005-04-05  Mauro Tortonesi  <mauro@ferrara.linux.it>
2433
2434         * Makefile.in: removed string_t.c from list of source files.
2435
2436 2005-04-04  Mauro Tortonesi  <mauro@ferrara.linux.it>
2437
2438         * string_t.c: Removed.
2439         
2440         * string_t.h: Removed.
2441
2442 2005-04-02  Hrvoje Niksic  <hniksic@xemacs.org>
2443
2444         * url.c (rewrite_shorthand_url): Only accept recognized schemes.
2445         That way "foo:80" will correctly be rewritten to "http://foo:80"
2446         instead of left unchanged and ultimately rejected because of
2447         "unsupported scheme foo".
2448
2449 2005-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
2450
2451         * utils.c (number_to_string): Avoid explicit 64-bit constants;
2452         construct them by multiplication at compile-time.
2453
2454         * utils.c, elsewhere: Don't append "L" to 32-bit integer
2455         constants; we aren't really compilable on 16-bit systems anyway.
2456
2457         * hash.c (prime_size): Remove primes larger than 2^31, but include
2458         2^31-1, which is prime.
2459
2460 2005-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
2461
2462         * utils.c (string_set_to_array): New function.
2463
2464         * convert.c: Replace the use of "slists" with sets/hash-tables,
2465         which in fact suit the intended purpose much better.
2466         downloaded_html_list is removed altogether.
2467
2468 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
2469
2470         * ftp.h (enum): Rename GLOBALL, GETALL, and GETONE to
2471         GLOB_GLOBALL, GLOB_GETALL, and GLOB_GETONE to avoid conflict with
2472         Linux headers.
2473
2474 2005-03-29  Hrvoje Niksic  <hniksic@xemacs.org>
2475
2476         * utils.c (numdigit): More correct handling of negative numbers.
2477
2478 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
2479
2480         * http.c (gethttp): Print the human-readable size.
2481
2482         * ftp.c (getftp): Print the human-readable size of the file to be
2483         downloaded.
2484
2485         * utils.c (human_readable): New function.
2486
2487         * utils.c: Renamed "legible" to "with_thousand_seps",
2488         "legible_large_int" to "with_thousand_seps_large", and "legible_1"
2489         to "add_thousand_seps".
2490
2491 2005-03-21  Hrvoje Niksic  <hniksic@xemacs.org>
2492
2493         * http.c (gethttp): Inhibit persistent connections when talking to
2494         proxies, as mandated by RFC 2068.
2495
2496 2005-03-20  Hrvoje Niksic  <hniksic@xemacs.org>
2497
2498         * url.c (unescape_single_char): New function.
2499         (url_escape_dir): Use it to unescape slashes in directory
2500         components.
2501         (url_string): Escape unsafe chars in host name, except for the ':'
2502         charaters, which can appear in IPv6 addresses.
2503
2504         * main.c (main): Don't access the cookie jar directly.
2505
2506         * log.c (escnonprint_internal): Correctly calculate the needed
2507         string size.  Don't forget the buffer's new size after having
2508         reallocated it.
2509         (log_cleanup): New function.  Free the escnonprint ring data.
2510
2511         * init.c (cleanup): Don't free the cookie jar explicitly, it is
2512         now done by http_cleanup.
2513         (cleanup): opt.user_headers is now a vector, free it with
2514         free_vec.
2515
2516         * http.c (gethttp): Make sure to free the request data, the status
2517         message, and the response data before returning from the function.
2518         (save_cookies): New function.
2519         (http_cleanup): Free the cookie jar here.
2520
2521         * hash.c: Renamed string_hash to hash_string and ptrhash to
2522         hash_pointer.  Exported hash_pointer.
2523
2524         * xmalloc.c: Organized malloc_table (previously malloc_debug) as a
2525         simple EQ hash table.  register_ptr and unregister_ptr are now of
2526         O(1) complexity.
2527
2528         * xmalloc.c: Renamed "*_debug" to debugging_* and "*_real" to
2529         checking_*.
2530
2531 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
2532
2533         * utils.c (debug_test_md5): Moved to gen-md5.c.
2534
2535         * mswindows.h: Don't declare inet_ntop, since we don't use it.
2536
2537         * mswindows.h: For consistency, also wrap closesocket, it being
2538         a Winsock call.
2539
2540         * mswindows.h: Don't declare sleep and usleep; we're defining
2541         xsleep now.
2542
2543         * mswindows.h (mkdir): Don't special-case Borland C, _mkdir
2544         works there as well.
2545
2546         * host.c: Don't include winsock header files; the correct ones
2547         are already included by mswindows.h.
2548
2549         * mswindows.c (xsleep): Round toward the nearest millisecond
2550         in an attempt to avoid average short sleeps.
2551
2552         * utils.c (wtimer_granularity): Report correct values for
2553         Windows timers and for high-resolution timers.
2554
2555         * utils.c (wtimer_initialize_once): New function, called to
2556         initialize the timer frequency.
2557
2558         * utils.c: Replace the use of GetSystemTime with high-resolution
2559         counters under Windows.  When high-resolution counters are
2560         unavailable, use GetTickCount().
2561
2562 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
2563
2564         * retr.c (fd_read_body): Undo the 2004-11-18 change.  Instead,
2565         always be "exact".
2566
2567 2005-03-17  Hrvoje Niksic  <hniksic@xemacs.org>
2568
2569         * ftp-basic.c (ftp_login): Don't free the string if ftp_response
2570         returned an error status because the line didn't get allocated in
2571         the first place.
2572
2573 2005-03-15  Hrvoje Niksic  <hniksic@xemacs.org>
2574
2575         * http.c (read_http_response_head): Limit the response size to 64k
2576         bytes.
2577
2578         * retr.c (fd_read_hunk): Accept a MAXSIZE argument that limits the
2579         number of bytes the function is allowed to allocate.
2580         (fd_read_line): Limit the line to 4096 bytes.
2581
2582 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
2583
2584         * wget.h: Include options.h after wgint has been defined.
2585
2586         * options.h (struct options): Declare options processed with
2587         cmd_bytes as wgint, not long.
2588
2589 2005-03-18  Hrvoje Niksic  <hniksic@xemacs.org>
2590
2591         * init.c (cmd_file): Use concat_strings.
2592
2593         * http.c (basic_authentication_encode): Use concat_strings.
2594
2595         * ftp-ls.c (ftp_index): Use concat_strings.
2596
2597         * ftp-basic.c (ftp_request): Use concat_strings.
2598
2599         * utils.c (concat_strings): New function.
2600
2601 2005-03-12  Hrvoje Niksic  <hniksic@xemacs.org>
2602
2603         * init.c (simple_atof): Handle negative numbers; skip whitespace
2604         before the number.
2605         (simple_atoi): Ditto.  Also, check for overflow and underflow.
2606         (cmd_number): Bail out on negative numbers.
2607         (parse_bytes_helper): Ditto.
2608
2609 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
2610
2611         * http.c (gethttp): Handle multiple Set-Cookie headers sent by
2612         remote server.
2613
2614 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
2615
2616         * init.c (defaults): Use passive FTP by default.
2617
2618 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
2619
2620         * mswindows.c: Provide wrappers to Winsock functions that set
2621         errno to WSAGetLastError() in case of failure.  Also provide a
2622         Windows-specific version of strerror.
2623
2624         * mswindows.h: Wrap calls to socket, bind, connect, recv, send,
2625         select, getsockname, getpeername, and setsockopt.
2626
2627 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
2628
2629         * url.c (url_parse): Reject port numbers larger than 65535.  We
2630         also check for overflow while parsing port numbers.
2631
2632 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
2633
2634         * utils.c (read_file): Don't use wgint for file size; LFS won't
2635         work since the file is mmap'ed as a whole.
2636
2637         * options.h: Don't include stdio.h.
2638
2639         * log.c: Ditto.
2640
2641         * init.c: Disambiguate assignment from non-zero test to avoid
2642         Borland C warning.
2643
2644         * http.c (response_new): Don't needlessly post-increment count.
2645
2646         * hash.c: Include stdio.h.
2647
2648         * gnu-md5.h: Don't include stdio.h.
2649
2650         * getopt.h (struct option): Always use const.
2651
2652         * ftp.c (getftp): Avoid unnecessary assignment to RES to avoid
2653         Borland C warning.
2654
2655         * ftp-ls.c: Disambiguate assignment from non-zero test to avoid
2656         Borland C warning.
2657
2658         * cmpt.c (strptime_internal): Don't initialize rp_backup when
2659         !_NL_CURRENT to avoid Borland C warning.
2660
2661 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
2662
2663         * utils.c (fopen_excl): Fix parse error when O_BINARY is
2664         available.
2665
2666 2005-03-05  Hrvoje Niksic  <hniksic@xemacs.org>
2667
2668         * url.c (url_file_name): Don't allow hosts named ".." to be
2669         appended as path elements.
2670
2671 2005-03-03  Hrvoje Niksic  <hniksic@xemacs.org>
2672
2673         * retr.c (retrieve_url): Escape location header.
2674
2675         * http.c (print_server_response_1): Escape server response when
2676         printing it.
2677         (gethttp): Escape host name, status message, location header, and
2678         content type.
2679         (http_loop): Escape error message from server.
2680
2681         * host.c (lookup_host): Escape host name when printing it.
2682
2683         * ftp.c (getftp): Escape user name when printing it.
2684         (getftp): Escape remote file and directory for printing.
2685         (getftp): Escape server listing when printing it.
2686         (ftp_retrieve_list): Escape link name and file name.
2687         (ftp_retrieve_glob): Escape file name.
2688
2689         * ftp-basic.c (ftp_response): Escape server response when printing
2690         it.
2691
2692         * cookies.c (parse_set_cookies): Escape the cookie field when
2693         printing it.
2694         (parse_set_cookies): Escape contents of remote header.
2695         (cookie_handle_set_cookie): Escape host name and cookie domain.
2696
2697         * connect.c (connect_to_ip): Escape the host name.
2698
2699         * log.c (escnonprint): New function, used for printing strings
2700         coming from the server that possibly contain non-ASCII characters.
2701         (escnonprint_uri): Ditto.
2702
2703 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
2704
2705         * ftp.c (getftp): Ditto.
2706
2707         * http.c (gethttp): When we're not supposed to overwrite files,
2708         use fopen_excl to open the file and recompute the file name.
2709
2710         * log.c (redirect_output): Use unique_create to avoid a race
2711         condition.
2712
2713         * mswindows.c (fake_fork_child): Use unique_create.
2714
2715         * utils.c (fopen_excl): New function that opens a stdio stream
2716         with the O_EXCL flag (where available).
2717         (unique_create): New function, like unique_name, but also creating
2718         the file and returning a file pointer.
2719         (fork_to_background): Use unique_create to create the file
2720         immediately to avoid race condition with multiple instances of
2721         wget -b.
2722
2723 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
2724
2725         * host.c (lookup_host): Test for AI_ADDRCONFIG directly, instead
2726         of checking for HAVE_GETADDRINFO_AI_ADDRCONFIG.
2727
2728 2005-02-23  Hrvoje Niksic  <hniksic@xemacs.org>
2729
2730         * host.c (is_valid_ipv6_address): Move here from url.c.
2731         (lookup_host): If the address is numeric, don't print the
2732         "resolving..." line, don't set up DNS timeouts, and set the
2733         AI_NUMERICHOST hint, where available.
2734
2735 2005-02-26  Gisle Vanem  <giva@bgnett.no>
2736
2737         * utils.c: Use the nnnLL syntax under GCC.  Define struct_stat to
2738         struct _stati64 under __MINGW32__ as well as under MS VC.
2739
2740 2005-02-26  Hrvoje Niksic  <hniksic@xemacs.org>
2741
2742         * utils.c: Use the nnnI64 syntax for __int64 constants under all
2743         Windows compilers.
2744         (SPRINTF_WGINT): Use "%I64" under all Windows compilers.
2745
2746         * mswindows.h (WGINT_MAX): Use the nnnI64 syntax for
2747         __int64 constants under all Windows compilers.
2748         (struct_stat): Use `struct stati64' under Borland C.
2749         (fstat): Don't redefine to _fstati64 under Borland.
2750
2751         * mswindows.c: Define str_to_int64 under Borland C as well as
2752         under (older) Visual C.
2753
2754 2005-02-25  Hrvoje Niksic  <hniksic@xemacs.org>
2755
2756         * ftp.c (getftp): Initialize err to suppress compiler warning.
2757
2758 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
2759
2760         * ftp.c (ftp_expected_bytes): Fix bug that caused infloop because
2761         of not correctly skipping the '(' character.
2762
2763 2005-02-24  Hrvoje Niksic  <hniksic@xemacs.org>
2764
2765         * mswindows.c (wget_ftello): Removed.
2766
2767         * mswindows.h: Remove bogus definition of stat.
2768         (wget_ftello): Remove the leftover ftello replacement.
2769
2770 2005-02-20  Hrvoje Niksic  <hniksic@xemacs.org>
2771
2772         * mswindows.c (wget_ftello): Wget's replacement for ftello.
2773
2774         * utils.c (file_size): Use ftello where available.
2775
2776         * ftp-ls.c (ftp_parse_unix_ls): Use str_to_wgint to parse the file
2777         size.
2778         (ftp_parse_winnt_ls): Ditto.
2779
2780         * ftp-basic.c (ftp_size): Use str_to_wgint to convert number to
2781         wgint; pass 10 instead of 0 as the BASE argument.
2782
2783         * ftp.c (ftp_expected_bytes): Use str_to_wgint to parse the file
2784         size.
2785
2786         * sysdep.h (LARGE_INT_FMT): Use __int64 as LARGE_INT on
2787         MSVC/Windows; print it with "%I64".
2788
2789         * wget.h: Define a `wgint' type, normally aliased to (the possibly
2790         64-bit variant of) off_t.
2791
2792         * all: Use `wgint' instead of `long' for numeric variables that
2793         can hold file sizes.
2794
2795         * utils.c (number_to_string): Support printing of `wgint'
2796         argument.
2797         (number_to_static_string): New function.
2798
2799         * all: Replace printf("%ld", long_value) with printf("%s",
2800         number_to_static_string(wgint_value)).
2801
2802 2005-02-18  Mauro Tortonesi <mauro@ferrara.linux.it>
2803
2804         * main.c: Added the --ftp-passwd command line option.
2805
2806         * init.c: Renamed command passwd to ftppasswd.
2807
2808 2005-02-11  Mauro Tortonesi <mauro@ferrara.linux.it>
2809         
2810         * string_t.c: Fixed a bug in do_escape and triggered escape of
2811         backslashes in string_escape to avoid ambiguities in the result
2812         string.
2813         
2814 2005-02-10  Mauro Tortonesi <mauro@ferrara.linux.it>
2815
2816         * string.h: Renamed to string_t.h to fix a compilation conflict 
2817         with the string.h header in the standard C library.
2818         
2819         * string.c: Renamed to string_t.c for consistency with string.h.
2820         
2821         * string_t.c: Ditto.
2822
2823         * string_t.h: Ditto.
2824         
2825 2004-12-31  Mauro Tortonesi <mauro@ferrara.linux.it>
2826
2827         * string.c: New file.
2828
2829         * string.h: New file.
2830
2831         * Makefile.in: Added string.c to the list of modules to compile.
2832
2833         * main.c: Updated copyright.
2834
2835 2004-11-18  Ulf Harnhammar <ulf.harnhammar.9485@student.uu.se>
2836
2837         * ftp-ls.c: Fixed a problem in ftp_parse_winnt_ls that could allow a
2838         malicious remote FTP server to crash wget.
2839
2840 2004-11-18  Hans-Andreas Engel <engel@node.ch>
2841
2842         * http.c: Enable --convert-links (-k) when a single page is downloaded
2843         via --output-document (-O).
2844
2845 2004-11-18  Mauro Tortonesi <mauro@deepspace6.net>
2846
2847         * connect.c: Minor correction to the comment in front of fd_peek.
2848
2849 2004-11-18  Leonid Petrov <nouser@lpetrov.net>
2850
2851         * retr.c: Fix a timeout problem in fd_read_body when using http_proxy.
2852
2853 2004-11-15  YAMAZAKI Makoto <Yamazaki.Makoto@fujixerox.co.jp>
2854
2855         * netrc.c: Fix termination by assertion bug in netrc parsing.
2856
2857 2004-05-09  David Fritz  <zeroxdf@att.net>
2858
2859         * mswindows.c (fake_fork): Pass entire command line to the child
2860         process.
2861
2862 2004-03-31  Hrvoje Niksic  <hniksic@xemacs.org>
2863
2864         * http.c (gethttp): Fix typo: SCHEME_SSL -> SCHEME_HTTPS.
2865
2866 2004-03-30  Hrvoje Niksic  <hniksic@xemacs.org>
2867
2868         * http.c (gethttp): Send the Proxy-Authorization header over
2869         non-SSL connections too.
2870
2871 2004-03-25  David Fritz  <zeroxdf@att.net>
2872
2873         * mswindows.c (fake_fork_child): Ignore error code when
2874         OpenFileMapping() fails; assume it failed because the object does
2875         not exist.
2876
2877 2004-03-24  David Fritz  <zeroxdf@att.net>
2878
2879         * mswindows.c (fake_fork): New function.
2880
2881         * mswindows.c (fork_to_background): Use it.
2882
2883 2004-03-19  David Fritz  <zeroxdf@att.net>
2884
2885         * mswindows.c (ws_hangup): Incorporate old fork_to_background()
2886         code.  Add event name argument.
2887         (fork_to_backgorund): Now a simple wrapper around ws_hangup().
2888         (ws_handler): Correctly handle the case when neither CTRLC_BACKGND
2889         nor CTRLBREAK_BACKGND are defined.  Don't bother handling close,
2890         logoff, or shutdown events.  Call ws_hangup() with the correct
2891         event name; don't assume it was CTRL+Break.
2892
2893 2004-03-19  Hrvoje Niksic  <hniksic@xemacs.org>
2894
2895         * url.c (url_parse): Decode %HH sequences in host name.
2896
2897 2004-03-04  Hrvoje Niksic  <hniksic@xemacs.org>
2898
2899         * convert.c (local_quote_string): Quote "#" as "%23" and "%" as
2900         "%25" when creating links to local files.
2901
2902 2004-03-02  David Fritz  <zeroxdf@att.net>
2903
2904         * mswindows.c (ws_percenttitle): Guard against future changes by
2905         doing nothing if the proper variables have not been initialized.
2906         Clamp percentage value.
2907
2908 2004-03-04  Gisle Vanem  <giva@bgnett.no>
2909
2910         * retr.c (fd_read_body): Don't change console title if quiet.
2911
2912 2004-02-25  David Fritz  <zeroxdf@att.net>
2913
2914         * mswindows.c (set_sleep_mode): Remove argument and return value.
2915         Call GetModuleHandle() instead of LoadLibrary()/FreeLibrary() for
2916         kernel32.dll.  Use typedef for function-pointer.  Don't cast
2917         l-value.  Don't use dereference operator when calling through
2918         function-pointer.
2919         (ws_startup): Update call to set_sleep_mode().
2920         (ws_cleanup): Remove call to set_sleep_mode().
2921
2922 2004-02-23  David Fritz  <zeroxdf@att.net>
2923
2924         * http.c (http_loop): Ditto.
2925
2926         * ftp.c (ftp_loop_internal): Update call to ws_changetitle().
2927
2928         * main.c (main): Don't bother calling ws_changetitle().
2929
2930         * mswindows.h (ws_changetitle): Update prototype.
2931
2932         * mswindows.c (ws_changetitle): Remove second argument.  Use
2933         xfree_null().
2934         (ws_percenttitle): Only update title when percentage has changed.
2935
2936 2004-02-23  David Fritz  <zeroxdf@att.net>
2937
2938         * mswindows.h: Ditto.
2939
2940         * mswindows.c: Misc. formatting/comment tweaks throughout.
2941
2942 2004-02-20  David Fritz  <zeroxdf@att.net>
2943
2944         * main.c (print_help): Remove call to ws_help().
2945
2946         * mswindows.c (ws_help): Remove.
2947
2948         * mswindows.h (ws_help): Remove.
2949
2950 2004-02-16  David Fritz  <zeroxdf@att.net>
2951
2952         * init.c (home_dir): Use aprintf() instead of xmalloc()/sprintf().
2953         Under Windows, if $HOME is not defined, use the directory that
2954         contains the Wget binary instead of hard-coded `C:\'.
2955         (wgetrc_file_name): Under Windows, look for $HOME/.wgetrc then, if
2956         not found, look for wget.ini in the directory of the Wget binary.
2957
2958         * mswindows.c (ws_mypath): Employ slightly more robust methodology.
2959         Strip trailing path separator.
2960
2961 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
2962
2963         * http.c (gethttp): Respect --ignore-length.
2964         (gethttp): Inhibit keep-alive if --ignore-length is specified.
2965
2966 2004-02-06  Hrvoje Niksic  <hniksic@xemacs.org>
2967
2968         * connect.c (sockaddr_set_data): Zero out
2969         sockaddr_in/sockaddr_in6.  Apparently BSD-derived stacks need this
2970         when binding a socket to local address.
2971
2972 2004-02-04  Hrvoje Niksic  <hniksic@xemacs.org>
2973
2974         * hash.c: Make the file compilable outside Wget source tree when
2975         -DSTANDALONE is used.
2976
2977 2004-01-29  Hrvoje Niksic  <hniksic@xemacs.org>
2978
2979         * utils.c (determine_screen_width): Return 0 if not running on
2980         Windows or on a TIOCGWINSZ-capable system.
2981
2982 2004-01-28  David Fritz  <zeroxdf@att.net>
2983
2984         * utils.c (determine_screen_width): Correctly determine console
2985         width under Windows.
2986
2987 2004-01-28  Christian Biere  <christianbiere@gmx.de>
2988
2989         * progress.c (bar_set_params): Fixed syntax error when HAVE_ISATTY
2990         was undefined.
2991
2992         * ftp.c (ftp_loop_internal): Allocate a larger buffer in case
2993         "try" gets translated to something large.  Ditto in http_loop in
2994         http.c.
2995
2996         * http.c (response_header_copy): Don't write to buf[BUFSIZE].
2997
2998         * ftp-opie.c (skey_response): Eliminate unnecessary string
2999         concatenation; just call gen_md5_update twice.
3000
3001 2004-01-25  Hrvoje Niksic  <hniksic@xemacs.org>
3002
3003         * utils.c (xsleep): Don't call usleep with values larger than
3004         1,000,000.
3005
3006 2003-12-16  Hrvoje Niksic  <hniksic@xemacs.org>
3007
3008         * http.c (gethttp): Fix generation of `Content-Length'.
3009
3010 2003-12-15  Gisle Vanem  <giva@bgnett.no>
3011
3012         * url.c (url_skip_credentials): Fixed return value; 'url' if no
3013         credentials.
3014
3015 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
3016
3017         * url.c (url_skip_credentials): Return a pointer directly.
3018
3019 2003-12-14  Hrvoje Niksic  <hniksic@xemacs.org>
3020
3021         * url.c (url_file_name): Ditto.
3022         (parse_errors): Ditto.
3023
3024         * retr.c (retr_rate): Ditto.
3025
3026         * progress.c (create_image): Ditto.
3027
3028         * netrc.c (parse_netrc): Ditto.
3029
3030         * main.c (struct cmdline_option): Ditto.
3031         (redirect_output_signal): Ditto.
3032
3033         * init.c (commands): Ditto.
3034
3035         * ftp-ls.c (ftp_index): Ditto.
3036
3037         * cookies.c (check_domain_match): Declare the pointer to a literal
3038         string as `const'.
3039
3040 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
3041
3042         * retr.c (fd_read_body): Pass total size to progress_create, not
3043         the remaining amount.
3044
3045 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
3046
3047         * retr.c (fd_read_body): Don't fiddle with "interactive timeout"
3048         if read timeout is unset.
3049
3050 2003-12-12  Hrvoje Niksic  <hniksic@xemacs.org>
3051
3052         * connect.c (bind_local): Don't set the IPV6_V6ONLY option on the
3053         socket.
3054
3055 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
3056
3057         * url.c (url_file_name): Respect the setting of
3058         opt.protocol_directories.
3059
3060         * main.c (main): Only check for ret=='?' when longindex is unset.
3061         (option_data): New option --protocol-directories.
3062
3063 2003-12-06  Hrvoje Niksic  <hniksic@xemacs.org>
3064
3065         * ftp.c (getftp): Ditto.
3066
3067         * http.c (gethttp): Correctly calculate bandwidth as total data
3068         read divided with download time.
3069
3070         * retr.c (fd_read_body): Separate the return values for data
3071         written and read.
3072
3073 2003-12-05  Hrvoje Niksic  <hniksic@xemacs.org>
3074
3075         * http.c (H_REDIRECTED): Respect the HTTP/1.1 "303 See Other"
3076         response code.
3077         Suggested by Dan Razzell.
3078
3079 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
3080
3081         * retr.c (fd_read_body): Report the amount of data *written* as
3082         amount_read.  This is not entirely logical, but that's what the
3083         callers expect, and it's not easy to change.
3084
3085         * ftp.c (ftp_loop_internal): Ditto.
3086
3087         * http.c (http_loop): Be smarter about assigning restval; if we're
3088         in the nth pass of a download, simply use the information we have
3089         about how much data has been retrieved as restval.
3090
3091         * ftp.c (getftp): Ditto for FTP "REST" command.
3092
3093         * http.c (gethttp): When the server doesn't respect range, skip
3094         the first RESTVAL bytes of the read body.  Never truncate the
3095         output file.
3096
3097         * retr.c (fd_read_body): Support skipping initial STARTPOS octets.
3098
3099 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
3100
3101         * http.c (skip_short_body): Renamed skip_body to skip_short_body;
3102         don't bother calling fd_read_body.
3103
3104 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
3105
3106         * retr.c (fd_read_body): Sanitize arguments and document them
3107         better.  Make sure the timer is created and updated only if
3108         necessary.  Updated callers.
3109
3110 2003-11-30  Hrvoje Niksic  <hniksic@xemacs.org>
3111
3112         * http.c (skip_body): New function.
3113         (gethttp): Use it to skip the body of the responses we don't care
3114         to download.  That allows us to reuse the connection.
3115         (gethttp): Trust that the HEAD requests will not generate body
3116         data.
3117
3118         * retr.c (fd_read_body): Don't write to OUT if it's NULL.
3119
3120 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
3121
3122         * http.c (gethttp): Initialize SSL only the first time when SSL
3123         URL is downloaded.
3124
3125 2003-11-29  Hrvoje Niksic  <hniksic@xemacs.org>
3126
3127         * cookies.c (cookie_header): Only generate the contents of the
3128         header, not the leading "Cookie: " or the trailing "\r\n".
3129
3130         * http.c (gethttp): When adding headers specified with `--header',
3131         allow them to override the headers generated by Wget.
3132
3133         * init.c (cmd_spec_header): Made opt.user_headers a vector.
3134
3135         * http.c (request_new): New function.  Returns a request structure
3136         which can be modified in various ways, most notably by adding HTTP
3137         headers to the request.
3138         (request_set_header): New function for adding the header to the
3139         request.  If the header is already available, it gets replaced.
3140         (request_send): Construct and send the request.
3141         (gethttp): Use the request_* functions to generate the request.
3142
3143 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
3144
3145         * http.c (gethttp): Don't include the Proxy-Authorization header
3146         in the request tunneled through proxy.
3147
3148 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
3149
3150         * http.c (gethttp): Use the CONNECT handle to establish SSL
3151         passthrough through non-SSL proxies.
3152
3153 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
3154
3155         * init.c: Don't #include netinet/Winsock stuff.
3156
3157 2003-11-28  Hrvoje Niksic  <hniksic@xemacs.org>
3158
3159         * http.c: Deleted the old functions header_process,
3160         header_extract_number, header_exists, header_strdup,
3161         http_process_range, http_process_none, http_process_type, and
3162         http_process_connection.
3163
3164         * http.c (response_new): New function.
3165         (response_header_bounds): Ditto.
3166         (response_header_copy): Ditto.
3167         (response_header_strdup): Ditto.
3168         (response_status): Ditto.
3169         (gethttp): Use the new response_* functions to parse the response.
3170         Support HTTP/0.9 responses.
3171
3172 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
3173
3174         * progress.c (create_image): Don't calculate ETA if nothing has
3175         been downloaded yet, because it causes division by zero.
3176
3177 2003-11-27  Hrvoje Niksic  <hniksic@xemacs.org>
3178
3179         * connect.c (bind_local): Rename sa_len to addrlen because IRIX
3180         headers define sa_len as a macro.
3181
3182 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
3183
3184         * html-parse.c (convert_and_copy): Remove embedded newlines when
3185         AP_TRIM_BLANKS is specified.
3186
3187 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
3188
3189         * ftp.c: Set con->csock to -1 where rbuf_uninitialize was
3190         previously used.
3191
3192 2003-11-26  Hrvoje Niksic  <hniksic@xemacs.org>
3193
3194         * Makefile.in (http$o): Added the trailing backslash that was
3195         missing.
3196
3197 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
3198
3199         * headers.c: Removed.  The file is no longer relevant, now that no
3200         special handling of headers is done by the rbuf code.  Moved
3201         portions to http.c.
3202
3203 2003-11-21  Hrvoje Niksic  <hniksic@xemacs.org>
3204
3205         * rbuf.c: Removed.
3206
3207         * ftp-basic.c (ftp_response): Use fd_read_line.  No longer use
3208         struct rbuf.  Updated all callers.
3209
3210         * http.c (gethttp): Use fd_read_head to read all the headers in
3211         one go.
3212         (next_header): New function.
3213
3214         * retr.c (fd_read_line): New function: reads a line from FD,
3215         leaving the rest of the data unread.
3216         (fd_read_head): New function.
3217
3218         * connect.c (fd_peek): New function, implements peeking.
3219         (poll_internal): New function.
3220         (fd_read): Use it.
3221         (fd_write): Ditto.
3222         (fd_peek): Ditto.
3223         (fd_register_transport): Allow registering a "peeker" callback.
3224
3225 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
3226
3227         * connect.c: Renamed xread/xwrite/xclose to
3228         fd_read/fd_write/fd_close.  The "x" prefix is not appropriate
3229         because the semantics have diverged from read/write/close too
3230         significantly.  Updated all callers.
3231
3232 2003-11-20  Hrvoje Niksic  <hniksic@xemacs.org>
3233
3234         * connect.c (sock_write): It's not necessary to initialize RES.
3235
3236 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
3237
3238         * main.c (main): Don't reference opt.ipv4_only and opt.ipv6_only
3239         if IPv6 is disabled.
3240
3241 2003-11-19  Hrvoje Niksic  <hniksic@xemacs.org>
3242
3243         * connect.c (socket_has_inet6): Only compile it if IPv6 is enabled
3244         and AI_ADDRCONFIG is missing.
3245
3246 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
3247
3248         * gen_sslfunc.c (ssl_init_prng): Warn the user when using a weak
3249         random seed.
3250
3251 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
3252
3253         * host.c (address_list_contains): Renamed address_list_find to
3254         address_list_contains because its result is boolean.
3255
3256 2003-11-18  Hrvoje Niksic  <hniksic@xemacs.org>
3257
3258         * connect.c (select_fd): Return 1 if select is not available.
3259
3260 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
3261
3262         * connect.c (connect_to_host): Don't reference address list after
3263         releasing it.
3264
3265 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
3266
3267         * main.c (print_help): Fix alignment of FTP options output.
3268
3269 2003-11-17  Hrvoje Niksic  <hniksic@xemacs.org>
3270
3271         * host.c (lookup_host): Check for the ability to create IPv6
3272         sockets here.
3273
3274         * init.c (defaults): Don't auto-set --inet4-only on IPv6-less
3275         systems.
3276
3277 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
3278
3279         * main.c (print_help): Fix typo in `-O' help message.  Fix docs of
3280         -Y/--proxy.  Fix docs of `--cookies' and `--glob'.  Improve docs
3281         of --convert-links.  Fix docs of SSL options.
3282
3283 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
3284
3285         * ftp-basic.c: Don't include <arpa/inet.h> and others because
3286         they're no longer needed.
3287
3288 2003-11-16  Hrvoje Niksic  <hniksic@xemacs.org>
3289
3290         * main.c (main): Don't allow setting of both opt.ipv4_only and
3291         opt.ipv6_only.
3292
3293         * init.c (defaults): Mark opt.ipv4_only specially when set
3294         automatically.
3295
3296 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
3297
3298         * host.c (lookup_host): Use AI_ADDRCONFIG only if the family is
3299         unspecified.  This ensures that specifying `--no-inet4' on systems
3300         where IPv6 resolves, but doesn't work behaves the same regardless
3301         of the availability of AI_ADDRCONFIG.
3302
3303 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
3304
3305         * host.c: Don't refer to the now-removed function
3306         forget_host_lookup in the documentation of lookup_host.
3307
3308 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
3309
3310         * http.c (persistent_available_p): Correctly specify the endpoint
3311         argument to socket_ip_address.
3312         (gethttp): When printing the "reusing connection to..." message,
3313         specify the host name of the reused connection, not the current
3314         host name.  That makes more sense because it provides a useful
3315         piece of information -- we know to which host we're supposed to
3316         connect anyway!
3317
3318 2003-11-15  Hrvoje Niksic  <hniksic@xemacs.org>
3319
3320         * init.c: Make sure the options are in alphabetic order!
3321
3322         * host.c (lookup_host): Merge lookup_host_passive and lookup_host
3323         after all -- having both would result in some code duplication.
3324         (lookup_host): Set hints.ai_family to AF_INET if ipv4_only is
3325         requested.  Likewise, set it to AF_INET6 for ipv6_only.  Specify
3326         AI_ADDRCONFIG where available.
3327         (lookup_host): New flag LH_REFRESH that specifies that a cached
3328         entry for HOST should be refreshed.
3329         (cache_query): New function.
3330         (cache_store): Ditto.
3331         (cache_remove): Ditto.
3332         (forget_host_lookup): No longer necessary, replaced with static
3333         function cache_remove.
3334
3335 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
3336
3337         * main.c: Enable -4 and -6 only if IPv6 is enabled.
3338
3339 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
3340
3341         * connect.c (register_transport): Renamed from register_extended.
3342         Explain the intended usage.
3343
3344 2003-11-14  Hrvoje Niksic  <hniksic@xemacs.org>
3345
3346         * url.c (uri_merge): Merging "foo" and "bar" should result in
3347         "bar", not in "foo/bar".
3348         (path_simplify): Don't remove empty path elements; don't
3349         special-case leading slash.
3350         (path_simplify): Don't swallow ".."'s at the beginning of string.
3351         E.g. simplify "foo/../../bar" as "../bar", not as "bar".
3352         (append_uri_pathel): Defang ".." path element upon encountering
3353         it.
3354
3355 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
3356
3357         * http.c (persistent_available_p): Don't attempt to talk to two
3358         different SSL sites over the same secure connection.
3359
3360 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
3361
3362         * http.c (gethttp): Ditto.
3363
3364         * ftp.c (getftp): Use retryable_socket_connect_error instead of
3365         CONNECT_ERROR.
3366
3367         * wget.h (CONNECT_ERROR): Removed.
3368
3369         * connect.c (retryable_socket_connect_error): New function instead
3370         of unsupported_socket_family_error.
3371
3372 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
3373
3374         * wget.h (CONNECT_ERROR): Use it.
3375
3376         * connect.c (unsupported_socket_family_error): New function.
3377
3378 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
3379
3380         * connect.c (bind_local): Renamed bindport to bind_local; return
3381         the socket directly.  Updated callers.
3382         (accept_connection): Renamed acceptport to accept_connection;
3383         return the created socket directly.  Updated callers.
3384
3385 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
3386
3387         * init.c (defaults): Turn on opt.ipv4_only if we're compiling with
3388         IPv6, and AI_ADDRINFO is not available, and AF_INET6 sockets can't
3389         be created.
3390
3391 2003-11-13  Hrvoje Niksic  <hniksic@xemacs.org>
3392
3393         * host.c (lookup_host): Document the fact that the addresses are
3394         returned in order.
3395
3396 2003-11-12  Hrvoje Niksic  <hniksic@xemacs.org>
3397
3398         * utils.c: Use limits.h only where available.
3399
3400         * hash.c: Use INVALID_PTR and INVALID_PTR_BYTE.  Include limits.h.
3401
3402 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
3403
3404         * main.c: Added options --inet4-only and --inet6-only.
3405
3406 2003-11-11  Hrvoje Niksic  <hniksic@xemacs.org>
3407
3408         * host.c (host_errstr): Use the more standard message "Unknown
3409         host".
3410
3411 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
3412
3413         * connect.c (connect_to_host): Use that flag to decide whether to
3414         re-resolve the host name.
3415
3416         * host.c (struct address_list): Added a flag that maintains
3417         whether the connection worked at some point.
3418
3419 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
3420
3421         * host.c (lookup_host): Special-case the numeric addresses only in
3422         the non-IPv6 case.
3423
3424 2003-11-10  Hrvoje Niksic  <hniksic@xemacs.org>
3425
3426         * connect.c (resolve_bind_address): Call lookup_host_passive.
3427         Make sure that opt.bind_address is resolved only once.
3428
3429         * host.c (lookup_host_passive): New function, handles "passive"
3430         lookups.
3431         (lookup_host): Remove the passive flags.  Remove the
3432         family-related flags -- use ip_default_family instead.
3433
3434 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
3435
3436         * html-url.c: Get URLs from <object data="...">.
3437
3438 2003-11-09  Hrvoje Niksic  <hniksic@xemacs.org>
3439
3440         * main.c (option_data): Specify the command to use for --mirror.
3441
3442 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3443
3444         * cookies.c (cookie_handle_set_cookie): Specify exact match for
3445         unspecified domains.
3446
3447 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3448
3449         * main.c (main): Removed one-letter options `-C', `-g', `-G', and
3450         `-s'.
3451
3452 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3453
3454         * main.c (main): Add --dont-remove-listing for backward
3455         compatibility with previous versions.
3456         (print_help): Fix typo, spotted by Dennis Smit.
3457
3458 2003-11-08  Gisle Vanem  <giva@bgnett.no>
3459
3460         * ftp-basic.c: Support Windows-2000 ftp servers. Win-2000 *is*
3461         Win-NT 5.0 so calling it ST_WINNT is okay I guess.
3462
3463 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3464
3465         * progress.c (update_speed_ring): Clear the speed ring when the
3466         download stalls.
3467
3468         * retr.c (get_contents): Specify 0.95s read timeout, so that the
3469         progress gauge can be updated even when data arrives very slowly
3470         or stalls.
3471
3472 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3473
3474         * utils.c (wtimer_allocate): Bless the use of wtimer_read on a
3475         timer that has merely been allocated because get_contents() does
3476         that.
3477         (wtimer_update): Abort if the timer is not initialized.
3478
3479 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3480
3481         * retr.c (get_contents): Pass the timer to limit_bandwidth().
3482
3483         * utils.c (wtimer_update): New function instead of wget_elapsed;
3484         just update the timer, but don't return anything.
3485         (wtimer_read): Read and return the last known value of the timer.
3486
3487 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3488
3489         * http.c (persistent_available_p): Instead of matching all the
3490         addresses of HOST and last host, determine the peer's IP address
3491         with socket_ip_address and see if that address is one of those
3492         HOST resolves to.
3493
3494         * host.c (address_list_match_all): Removed.
3495         (address_list_find): New function, finds an IP address in the
3496         address list.
3497
3498         * ftp.c (ftp_do_pasv): Get the peer's address here, and pass it to
3499         ftp_epsv so it doesn't need to call getpeername.
3500
3501         * ftp-basic.c (ftp_port): Use socket_ip_address instead of
3502         getpeername.
3503         (ftp_lprt): Ditto.
3504
3505         * connect.c (socket_ip_address): Replaces conaddr, generalized to
3506         either get peer's or local address.
3507         (sockaddr_get_data): Made local to this file.
3508
3509 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3510
3511         * hash.c (HASH_POSITION): Explicitly accept the hash function.
3512         (grow_hash_table): Extract ht->hash_function outside the loop.
3513         (hash_table_remove): Ditto.
3514         (hash_table_clear): Fill entries with 0xff to clear them.
3515         (hash_table_remove): Mark entries as deleted with the correct
3516         marker.
3517
3518 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3519
3520         * http.c (persistent_available_p): No reason for the host lookup
3521         to be silent -- it's a lookup like any other.
3522
3523 2003-11-08  Hrvoje Niksic  <hniksic@xemacs.org>
3524
3525         * connect.c (register_extended): Check that fd >= 0.
3526
3527 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
3528
3529         * connect.c (LAZY_RETRIEVE_INFO): Set LAST_INFO.
3530
3531 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
3532
3533         * hash.c (NON_EMPTY): Use the all-bit-set value as the marker that
3534         the field is empty.  This allows NULL pointer and 0 value to be
3535         used as keys, which is necessary for the connect.c code to work
3536         when fd==0.
3537         (hash_table_new): Fill mappings with 0xff.
3538         (grow_hash_table): Ditto.
3539
3540 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
3541
3542         * url.c (url_parse): Allow empty ports.
3543
3544 2003-11-07  Hrvoje Niksic  <hniksic@xemacs.org>
3545
3546         * main.c (print_help): Break the help string into multiple chunks.
3547         (cmdline_option): New option handler OPT_FUNCALL.  Generalized
3548         HANDLE_CMD to generic DATA.
3549         (option_data): Use the new OPT_FUNCALL feature.
3550
3551 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
3552
3553         * log.h: Declare log_init, log_close, and
3554         log_request_redirect_output here.
3555
3556 2003-11-05  Dennis Smit  <ds@nerds-incorporated.org>
3557
3558         * main.c: (main): added --preserve-permissions option.
3559
3560         * ftp.c (ftp_retrieve_list): added support for
3561         --preserve-permissions option.
3562
3563         * init.c: added support for --preserve-permission option.
3564
3565         * option.h: added support for --preserve-permission option.
3566
3567 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
3568
3569         * main.c (init_switches): New function.  Convert option_data to
3570         long_options and short_options, which can be fed to getopt_long.
3571         (main): Execute command-line options by consulting option_data.
3572
3573 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
3574
3575         * gen_sslfunc.c (ssl_read): Implement a more correct check for
3576         EINTR.
3577         (ssl_write): Ditto.
3578         (init_ssl): Use a global SSL context.
3579
3580 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
3581
3582         * connect.c (xclose): Free INFO even if it doesn't provide a
3583         closer.
3584
3585 2003-11-06  Hrvoje Niksic  <hniksic@xemacs.org>
3586
3587         * connect.c: Updated all callers of
3588         iread/ssl_iread/iwrite/ssl_iwrite to use xread and xwrite instead.
3589
3590         * rbuf.h (struct rbuf): Removed the SSL member because SSL is
3591         handled automatically by xread.
3592
3593         * hash.c (ptrhash): Made private.
3594         (ptrcmp): Ditto.
3595         (inthash): Removed.
3596
3597         * connect.c (select_fd): Don't set errno, leave it to the caller.
3598
3599         * gen_sslfunc.c (connect_ssl): Use register_extended to register
3600         SSL callbacks for communication with SSL-enabled endpoints.
3601         (ssl_read): New function.
3602         (ssl_write): Ditto.
3603         (ssl_poll): Ditto.
3604         (ssl_close): Ditto.
3605
3606         * connect.c (register_extended): New function -- register
3607         callbacks for basic socket operations.
3608         (xread): Ditto.
3609         (xwrite): Ditto.
3610         (xclose): Ditto.
3611         (sock_read): New function, default implementation for reading.
3612         (sock_write): Ditto for writing.
3613         (sock_poll): Ditto for polling.
3614         (sock_close): Ditto for closing.
3615
3616 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
3617
3618         * connect.c (bindport): Fix compilation under pre-C99 compilers.
3619
3620 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
3621
3622         * connect.c (connect_to_ip): More compact error checking.
3623         (bindport): Don't treat failed setsockopt as a fatal error.
3624
3625 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
3626
3627         * connect.c (resolve_bind_address): Use a more accurate error
3628         message -- we're not binding to ANY, we're disabling bind
3629         altogether.
3630
3631 2003-11-05  Hrvoje Niksic  <hniksic@xemacs.org>
3632
3633         * cookies.c (save_cookies_mapper): Respect the setting of
3634         keep-session-cookies.
3635         (cookie_jar_load): Import session cookies.
3636         Based on code submitted by Nicolas Schodet.
3637
3638         * utils.c (datetime_str): Use information in TM when it's
3639         non-NULL.
3640
3641         * main.c (main): New option `--keep-session-cookies'.
3642
3643 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
3644
3645         * Makefile.in (realclean): Delete config.h.in.
3646
3647 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
3648
3649         * config-post.h: New file, included from now autogenerated
3650         config.h.in.
3651
3652 2003-11-04  Hrvoje Niksic  <hniksic@xemacs.org>
3653
3654         * progress.c (progress_handle_sigwinch): Don't call
3655         determine_screen_width() from the signal handler.  Instead, just
3656         set a volatile variable.
3657         (bar_create): Check whether SIGWINCH was received.
3658         (bar_update): Ditto.
3659
3660         * sysdep.h: Define SYSTEM_FNMATCH only if HAVE_FNMATCH_H is true.
3661
3662 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
3663
3664         * utils.c (xsleep): New function.  Uses nanosleep where available,
3665         resuming sleeps interrupted by signals.  Updated callers of sleep
3666         and usleep to use xsleep.
3667
3668 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
3669
3670         * ftp-basic.c (ftp_login): Remove shadowing (and bogus)
3671         declaration of SEED.
3672
3673 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
3674
3675         * log.c (logvprintf): Documented better.  Renamed to
3676         log_vprintf_internal to avoid confusion with the public API
3677         functions logprintf and logputs.
3678
3679 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
3680
3681         * wget.h (N_): Don't parenthesize argument.
3682
3683 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
3684
3685         * host.h (ADDRESS_IPV4_DATA): Don't take the address of in.s_addr
3686         because that doesn't work on machines that define it as bitfield.
3687
3688 2003-11-03  Hrvoje Niksic  <hniksic@xemacs.org>
3689
3690         * connect.c (select_fd): Generalize the third argument into WAIT,
3691         so that the caller can request waiting for both read and write.
3692         Updated callers.
3693
3694 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
3695
3696         * html-url.c (cleanup_html_url): Destroy the hash tables, don't
3697         just call free on them.
3698         (init_interesting): Use hash_table_put instead of string_set_add
3699         because we don't need the strdup that the latter function
3700         performs.
3701
3702         * init.c (cleanup): Don't pass NULL to cookie_jar_delete.
3703
3704         * xmalloc.c (xfree_real): Abort when passed a NULL pointer.
3705         (xfree_debug): Print at the file and line of the offending call to
3706         free.
3707
3708 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
3709
3710         * wget.h: Retired the `boolean' type.  Moved the DEFAULT_LOGFILE
3711         define to log.h.  Moved the INFINITE_RECURSION define to recur.h.
3712
3713         * xmalloc.h: Renamed FREE_MAYBE to xfree_null and moved the
3714         definition from wget.h to xmalloc.h.
3715
3716 2003-11-02  Hrvoje Niksic  <hniksic@xemacs.org>
3717
3718         * html-parse.c (decode_entity): New function; split the decoding
3719         of entities here.
3720         (convert_and_copy): Use it to decode entities.
3721         (decode_entity): Handle the &apos entity.
3722         (decode_entity): Don't decode Latin 1 numeric entities.  Don't
3723         decode &#0.
3724
3725 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
3726
3727         * ftp-opie.c (calculate_skey_response): Use uint32_t instead of
3728         `unsigned long' for the cheksum array.  Document the function.
3729
3730 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
3731
3732         * connect.c (acceptport): Don't call select_fd when timeout is not
3733         requested.
3734
3735 2003-11-01  Hrvoje Niksic  <hniksic@xemacs.org>
3736
3737         * host.c: Removed the ip_default_family global variable.
3738
3739         * host.c (lookup_host): Document the function.  Fixed declaration
3740         of VEC.
3741
3742 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
3743
3744         * various: Use new macros xnew, xnew0, xnew_array, and xnew0_array
3745         in various places.
3746
3747 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
3748
3749         * wget.h: Move declarations of malloc and logging code to
3750         xmalloc.h and log.h respectively to unclutter this file.
3751         (STRDUP_ALLOCA): Made it side-effect free.
3752
3753         * xmalloc.h: New files.  Define macros xnew, xnew0, xnew_array,
3754         and xnew0_array.
3755
3756         * xmalloc.c: New file.  Move the xmalloc routines here.
3757
3758 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
3759
3760         * connect.c (sockaddr_set_data): Remove the broken code that
3761         checked for NULL address.
3762
3763 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
3764
3765         * host.c (address_list_from_single): Removed.
3766         (address_list_from_ipv4_addresses): Renamed from
3767         address_list_from_vector.
3768
3769 2003-10-31  Hrvoje Niksic  <hniksic@xemacs.org>
3770
3771         * sysdep.h (CLOSE): Don't call close on file descriptors less than
3772         0, i.e. on uncreated sockets.
3773
3774         * connect.c (resolve_bind_address): Work on struct sockaddr
3775         directly.
3776         (connect_to_host): Replacement for connect_to_many.  Resolve HOST
3777         and connect to any of its addresses.  If we can't connect and the
3778         host name lookup was cached, try to resolve it again.  This should
3779         fix problems with hosts behind dynamic DNS.  Updated all callers.
3780         (connect_to_ip): Replacement for connect_to_one.  Removed SILENT;
3781         added the argument PRINT instead.  Updated all callers.
3782         (set_connection_host_name): Removed.
3783
3784         * host.c (address_list_address_at): New function instead of
3785         address_list_copy_one. It returns a pointer to ip_address *, so
3786         it's not necessary to copy the data.
3787         (address_list_cached_p): New function.
3788         (forget_host_lookup): Ditto.
3789
3790         * connect.c: Got rid of the MSOCK global variable.  Made bindport
3791         return the local socket it creates.  Added a new argument to
3792         acceptport, the socket to call accept on.  Updated callers.
3793         (closeport): Removed.
3794
3795         * connect.c: Moved the sockaddr code from host.c to this file,
3796         because most of that stuff is used for connecting, and has nothing
3797         to do with host names anyway.
3798         (sockaddr_set_data, sockaddr_get_data): New functions, replace the
3799         old sockaddr_set_address, sockaddr_set_port, sockaddr_get_address,
3800         and sockaddr_get_port.
3801
3802 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
3803
3804         * sysdep.h: Use `S >= 8' rather than `S == 8' when looking for
3805         large integers.
3806
3807 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
3808
3809         * url.c (append_uri_pathel): New argument ESCAPED_P that says
3810         whether [B, E) is to be treated as URL-escaped or not.  If
3811         ESCAPED_P is false, don't unescape the region.
3812         (url_file_name): u->file is not URL-escaped.
3813
3814 2003-10-30  Hrvoje Niksic  <hniksic@xemacs.org>
3815
3816         * retr.c (retrieve_from_file): Use retrieve_tree for
3817         page-requisites.
3818
3819         * main.c (main): Don't define opt.recursive when -p is used.
3820         Instead, make sure that recursion is used for HTTP in that case.
3821
3822 2003-10-29  Hrvoje Niksic  <hniksic@xemacs.org>
3823
3824         * host.h: Defined accessors for elements of ip_address.  Updated
3825         all callers.
3826         (address_list_match_all): Use memcmp in the non-IPv6 case.
3827
3828         * wget.h (CONNECT_ERROR): Don't retry connecting if connect()
3829         returned EAFNOSUPPORT.
3830
3831 2003-10-27  Mauro Tortonesi <mauro@deepspace6.net>
3832
3833         * connect.h: changed bindport prototype and added the related
3834         BIND_ON_IPV4_ONLY and BIND_ON_IPV6_ONLY flags.
3835
3836         * connect.c: changed bindport and resolve_bind_address to allow
3837         protocol-version specific DNS resolution. modified conaddr,
3838         acceptport and connect_to_one to make use of struct
3839         sockaddr_storage and of the new ip_address structure.
3840
3841         * ftp-basic.c: added LPRT/LPSV (RFC1639) support, refactored
3842         PORT/PASV (RFC959) and EPRT/EPSV (RFC2428) support code.
3843
3844         * ftp.c: added the ftp_do_port and ftp_do_pasv functions to
3845         handle FTP over IPv6.
3846
3847         * ftp.h: changed prototype of ftp_epsv and added prototypes for
3848         ftp_lpsv, ftp_lprt and ftp_eprt.
3849
3850         * host.c: renamed the
3851         wget_sockaddr_set_address and wget_sockaddr_get_addr, and
3852         wget_sockaddr_{s,g}et_port couples to sockaddr_{s,g}et_address and
3853         sockaddr_{g,s}et_port respectively.  changed
3854         address_list_match_all, address_list_from_addrinfo sockaddr_len,
3855         pretty_print_address, lookup_host, sockaddr_{s,g}et_address and
3856         sockaddr_{g,s}et_port to make use of struct sockaddr_storage and
3857         of the new ip_address structure.  removed map_ipv4_to_ip and
3858         map_ip_to_ipv4.
3859
3860         * host.h: redefined structure ip_address and removed structure
3861         wget_sockaddr.
3862
3863 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
3864
3865         * sysdep.h: Include inttypes.h where available.
3866
3867         * host.c: Switch from u_int32_t to uint32_t.
3868
3869 2003-10-26  Hrvoje Niksic  <hniksic@xemacs.org>
3870
3871         * netrc.c (parse_netrc): Reset the QUOTE flag after the closing
3872         quote.
3873
3874 2003-10-25  Hrvoje Niksic  <hniksic@xemacs.org>
3875
3876         * url.c (is_valid_ipv6_address): Reformat to GNU coding style.
3877         Use enums for NS_IN* constants.  Use ISXDIGIT.
3878
3879         * convert.c (construct_relative): Document better how the function
3880         works.
3881
3882 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
3883
3884         * config.h.in: Deploy preprocessor magic to avoid Ultrix's
3885         <netdb.h> include <bitypes.h> which defines its own u_int32_t.
3886         Reported by Bernhard Simon.
3887
3888 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
3889
3890         * version.c: Bump version.
3891
3892 2003-10-23  Hrvoje Niksic  <hniksic@xemacs.org>
3893
3894         * url.c: Ditto.
3895
3896         * html-parse.c (advance_declaration): Don't use trailing comma in
3897         enum because older compilers don't support it.
3898
3899         * utils.c: Don't redefine HAVE_SIGSETJMP.
3900
3901 2003-10-16  Hrvoje Niksic  <hniksic@xemacs.org>
3902
3903         * convert.c (construct_relative): Don't handle absolute files
3904         specially -- for example, -P/tmp/foo shouldn't imply that
3905         converted files must refer to "/tmp/foo/..."!
3906
3907 2003-10-15  Hrvoje Niksic  <hniksic@xemacs.org>
3908
3909         * http.c: Consider status 307 a valid redirect.
3910
3911 2003-10-15  Philip Stadermann  <philip.stadermann@credativ.de>
3912
3913         * ftp.c (ftp_retrieve_glob): Correctly loop through the list whose
3914         elements might have been deleted.
3915
3916 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
3917
3918         * html-url.c (tag_handle_meta): Set the Refresh link to expect
3919         HTML.
3920         (append_one_url): Renamed to append_url.
3921
3922 2003-10-13  Hrvoje Niksic  <hniksic@xemacs.org>
3923
3924         * sysdep.h: Only define u_int32_t.
3925
3926 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
3927
3928         * utils.c (large_int_to_string): Use snprintf() to print the
3929         number.  This will work even on systems where libc doesn't
3930         understand %lld, but the compiler does, because it will use our
3931         snprintf replacement.
3932
3933         * init.c (parse_bytes_helper): New function.
3934         (cmd_bytes): Use it to parse bytes, but cast the result to long.
3935         (cmd_bytes_large): Ditto, but store the result to LARGE_INT.  Used
3936         for --quota so that --quota=10G works even on machines without
3937         long long.
3938
3939         * options.h (struct options): Declare quota as LARGE_INT.
3940
3941         * retr.c (downloaded_exceeds_quota): Removed.
3942         (downloaded_increase): Ditto.
3943         (total_downloaded_bytes): New variable, replaces opt.downloaded,
3944         which was the wrong place for it anyway.  Updated callers of
3945         downloaded_exceeds_quota and downloaded_increase to check this
3946         variable directly.
3947
3948         * sysdep.h: Get rid of VERY_LONG_TYPE.  Use LARGE_INT for the same
3949         purpose, defined as `long', `long long' or `double', depending on
3950         size of long and whether long long is available.
3951
3952 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
3953
3954         * sysdep.h: Also check size of short for int32_t.
3955
3956 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
3957
3958         * host.c (lookup_host): Use u_int32_t to store the result of
3959         inet_addr().  That removes the need for offset fiddling, caring
3960         about endian-ness, etc.
3961
3962         * sysdep.h: Define int32_t and u_int32_t if not available.
3963
3964 2003-10-11  Hrvoje Niksic  <hniksic@xemacs.org>
3965
3966         * ftp-basic.c (ftp_epsv): Use socklen_t * as the third argument to
3967         getpeername.
3968
3969         * config.h.in: Define socklen_t stub.
3970
3971         * host.c (sockaddr_len): Return socklen_t.
3972
3973         * connect.c (conaddr): Use socklen_t as the third argument to
3974         accept, getsockname, and connect.
3975
3976 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
3977
3978         * recur.c (retrieve_tree): Don't descend into documents that are
3979         not expected to contain HTML, regardless of their content-type.
3980
3981         * html-url.c (tag_url_attributes): Record which attributes are
3982         supposed to yield HTML links that can be followed.
3983         (tag_find_urls): Propagate that information to the caller through
3984         struct urlpos.
3985
3986 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
3987
3988         * hash.c (find_mapping): Return the next available mapping when
3989         the key is not found, not NULL.
3990         (hash_table_put): Use find_mapping to find the storage for the new
3991         data.
3992         (hash_table_put): Grow the table before exceeding maximum
3993         fullness, not afterwards.
3994
3995 2003-10-10  Hrvoje Niksic  <hniksic@xemacs.org>
3996
3997         * hash.c (hash_table_new): Slightly change the meaning of the
3998         first parameter.  Instead of being the minimum initial size, it is
3999         now the minimum number of items that the hash table can take
4000         without needing to resize.
4001
4002 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
4003
4004         * html-url.c (init_interesting): Initialize interesting_tags and
4005         interesting_attributes as hash tables.  This simplifies the code
4006         immensely because hash tables handle allocation and remove
4007         duplicates automatically.
4008         (find_tag): Removed.
4009         (collect_tags_mapper): Instead of calling find_tag, simply get the
4010         entry from interesting_tags hash table, which is both simpler and
4011         faster.
4012
4013 2003-10-09  Hrvoje Niksic  <hniksic@xemacs.org>
4014
4015         * hash.c (hash_table_get): Declare hash-table argument as const.
4016         (find_mapping): Ditto.
4017         (hash_table_get_pair): Ditto.
4018         (hash_table_contains): Ditto.
4019         (hash_table_count): Ditto.
4020
4021 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
4022
4023         * html-url.c (get_urls_html): Parse the appropriate flags to
4024         html-parse.c.
4025
4026         * html-parse.c (map_html_tags): Accept FLAGS from the caller
4027         instead of examining OPT.
4028
4029 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
4030
4031         * html-url.c (find_tag): Switch to binary search.
4032
4033 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
4034
4035         * main.c (print_help): Fix typo; stured -> stored.
4036
4037 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
4038
4039         * getopt.c: Add definitions of getopt_long and getopt_long_only.
4040
4041 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
4042
4043         * config.h.in: Renamed DEBUG to ENABLE_DEBUG.  ENABLE_DEBUG is, I
4044         think, a better name, because it implies that debugging output is
4045         merely possible, not "on by default", as might be construed from
4046         just DEBUG.
4047
4048 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
4049
4050         * ftp.c (has_insecure_name_p): Define it here.
4051
4052         * utils.c (has_wildcards_p): Define it here.
4053
4054         * sysdep.h: Declare fnmatch-related macros here, if not using
4055         system fnmatch().  Update .c files to not declare fnmatch.h
4056         directly.
4057
4058         * cmpt.c (fnmatch): Moved here.  Use it only under non-GNU libc.
4059
4060 2003-10-08  Hrvoje Niksic  <hniksic@xemacs.org>
4061
4062         * getopt.c: Newer version, imported from Free libit.
4063
4064 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
4065
4066         * cookies.c (struct cookie): Remove unused backpointer to cookie
4067         jar.
4068
4069 2003-10-07  Hrvoje Niksic  <hniksic@xemacs.org>
4070
4071         * cmpt.c (memmove): Comment out, since it's no longer used.
4072
4073         * cookies.c (cookie_jar_generate_cookie_header): Allocate room for
4074         chains in one pass.
4075         (find_chains_of_host): Assume that the caller has allocated DEST
4076         to be sufficiently large to take all the data.
4077         (eliminate_dups): Run through the array and eliminate dups on the
4078         fly instead of using memmove.
4079         (cookie_jar_process_set_cookie): Free cookie->domain before
4080         re-setting it.
4081
4082 2003-10-05  Gisle Vanem  <giva@bgnett.no>
4083
4084         * mswindows.c (set_sleep_mode): Fix type of
4085         _SetThreadExecutionState.
4086
4087 2003-10-05  Hrvoje Niksic  <hniksic@xemacs.org>
4088
4089         * utils.c (file_size): Return -1 if fopen() returns NULL.  Prior
4090         to this patch, wget --post-file=nosuchfile dumped core.
4091
4092 2003-10-04  Gisle Vanem  <giva@bgnett.no>
4093
4094         * mswindows.c (run_with_timeout): Use WaitForSingleObject to wait
4095         for thread termination.
4096
4097 2003-10-04  Hrvoje Niksic  <hniksic@xemacs.org>
4098
4099         * log.c: Use `...' in function definitions; ansi2knr will convert
4100         them to va_dcl.  This allowed removal of the ugly VA_START_1 and
4101         VA_START_2 macros.
4102
4103 2003-10-03  Gisle Vanem  <giva@bgnett.no>
4104
4105         * connect.c: And don't include them here.
4106
4107         * mswindows.h: Include winsock headers here.
4108
4109 2003-10-03  Hrvoje Niksic  <hniksic@xemacs.org>
4110
4111         * html-parse.c (convert_and_copy): Move variable declarations
4112         before statements.
4113
4114 2003-10-02  Gisle Vanem  <giva@bgnett.no>
4115         
4116         * mswindows.c (run_with_timeout): For Windows: Run the 'fun' in a
4117         thread via a helper function. Continually query the thread's
4118         exit-code until finished or timed out.
4119
4120 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
4121
4122         * wget.h (XMALLOC_ARRAY): Removed.
4123         (ALLOCA_ARRAY): Ditto.
4124
4125         * html-parse.c: Renamed alloca_p to resized.
4126         (GROW_ARRAY): Renamed DO_REALLOC_FROM_ALLOCA to GROW_ARRAY and
4127         returned it to html-parse.c, since nothing else was using it.
4128
4129 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
4130
4131         * retr.c (retrieve_url): Initialize DUMMY storage for DT.  Caught
4132         by valgrind.
4133
4134 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
4135
4136         * html-parse.c (convert_and_copy): Handle numeric entities in
4137         hexadecimal, &#xHH.
4138         (convert_and_copy): Copy the contents directly to the pool without
4139         a stack-allocated intermediary.
4140
4141 2003-10-02  Hrvoje Niksic  <hniksic@xemacs.org>
4142
4143         * utils.c (alarm_set): New function; use either setitimer or alarm
4144         to set up the alarm.
4145         (alarm_cancel): New function; cancel the alarm set up by
4146         alarm_set.
4147         (run_with_timeout): Use them.
4148
4149 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
4150
4151         * url.c (url_parse): Don't leak memory when a reencoded URL turns
4152         out to be invalid.
4153
4154         * url.c (parse_errors): Mark error messages for translation.
4155         (url_error): Translate error messages returned to the caller.
4156
4157 2003-10-01  Hrvoje Niksic  <hniksic@xemacs.org>
4158
4159         * ftp.c (ftp_loop_internal): Initialize TMRATE to NULL to shut up
4160         the compiler.
4161
4162 2003-09-26  Gisle Vanem  <giva@bgnett.no>
4163
4164         * src/mswindows.c: Added ws_percenttitle() showing progress in the
4165         window titlebar. Called from retr.c. Secured ws_mypath().
4166
4167         * windows/config.h.ms: alloca() prototype not needed.  Removed
4168         "#undef ENABLE_NLS"; should be in Makefile IMHO. Moved
4169         WGET_USE_STDARG from mswindows.h to config.ms.h because of #ifdef
4170         in log.c. (MSVC's vararg.h and stdarg.h are incompatible).
4171
4172 2003-09-29  Aaron Hawley <Aaron.Hawley@uvm.edu>
4173
4174         * ftp.c (getftp): --spider option should now work with FTP
4175         downloads.
4176         (ftp_loop_internal): quiet reports and calculations of downloads
4177         when --spider option set, nor try deleting when --delete-after
4178         also set.
4179         (ftp_loop): --spider will skip HTML-ification of .listing file.
4180
4181 2003-09-26  Gisle Vanem  <giva@bgnett.no>
4182
4183         * mswindows.c (read_registry): Removed.
4184         (set_sleep_mode): New function.
4185         (windows_main_junk): Call it.
4186
4187 2003-09-26  Gisle Vanem  <giva@bgnett.no>
4188
4189         * mswindows.c (read_registry): Fix invocation of registry
4190         functions.
4191
4192         * mswindows.c (read_registry): Condition definitions of sleep and
4193         usleep with not HAVE_SLEEP and HAVE_USLEEP respectively.  Define
4194         HAVE_SLEEP and HAVE_USLEEP under __DMC__.
4195
4196 2003-09-24  Hrvoje Niksic  <hniksic@xemacs.org>
4197
4198         * url.c (url_escape_1): Revert unintentional change to lowercase
4199         xdigit escapes.
4200         (url_escape_dir): Document that this function depends on the
4201         output of url_escape_1.
4202
4203 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
4204
4205         * progress.c (create_image): Print the current ETA if we're done
4206         with the download.
4207         (create_image): Change '-' display char to '+' in the progress bar.
4208
4209         * Makefile.in (clean): Remove .libs.
4210
4211 2003-09-23  Hrvoje Niksic  <hniksic@xemacs.org>
4212
4213         * cookies.c (struct cookie): New flag domain_exact.
4214         (update_cookie_field): Skip leading dot in domain.
4215         (find_matching_chains): Match numeric addresses exactly; don't
4216         needlessly copy HOST to the stack.
4217         (matching_cookie): Added argument HOST.  If cookie->domain_exact
4218         is set, check that HOST is equal to cookie->domain.
4219         (cookie_jar_load): Only use TAB as delimiter.  Document the
4220         meaning of DOMAIN-FLAG.  Skip leading dot in domain.
4221         (cookie_jar_load): Don't ignore DOMAIN-FLAG -- instead, set
4222         domain_exact to true if DOMAIN-FLAG is false.
4223         (save_cookies_mapper): If domain_exact is false, prepend the
4224         domain with dot, like Mozilla does.
4225
4226 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
4227
4228         * progress.c (create_image): Print the initial part of the
4229         download with '-' characters, analogous to how dot progress prints
4230         the initial part with ','.
4231
4232         * hash.c (ptrhash): New function.
4233         (ptrcmp): Ditto.
4234         (hash_table_new): Default to identity hash table.
4235
4236 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
4237
4238         * safe-ctype.h (_sch_test): The cast of BIT to unsigned char was
4239         broken -- _sch_istable bitmasks are 16-bit, not 8-bit!  Cast BIT
4240         to unsigned short instead.
4241
4242 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
4243
4244         * url.c (path_simplify): Instead of calls to memmove, handle "./"
4245         and "../" by advancing pointers.
4246
4247 2003-09-22  Hrvoje Niksic  <hniksic@xemacs.org>
4248
4249         * retr.c (getproxy): Moved from url.c.
4250
4251         * convert.c: Split off link conversion from url.c into separate
4252         file.  Also included the book-keeping stuff from recur.c.
4253
4254 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
4255
4256         * init.c: Improved documentation of functions.
4257         (cmd_boolean): Attempt to make code that tries to avoid calling
4258         strcmp for "speed" a bit more readable.
4259
4260         * init.c (simple_atof): Report error on encountering non-digit,
4261         non-"." character.
4262         (simple_atoi): Replacement for myatoi(), calling interface
4263         compatible with simple_atof.  Updated myatoi's callers.
4264
4265 2003-09-21  Bertrand Demiddelaer  <bert@b3rt.org>
4266
4267         * url.c (path_simplify): Would read two bytes past the end of the
4268         string in the "./" case.
4269
4270 2003-09-21  Matthew J. Mellon  <mellon@tymenet.com>
4271
4272         * http.c (gethttp): Recognize content-type "application/xhtml+xml"
4273         as what Wget considers "text/html".
4274
4275 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
4276
4277         * connect.c (connect_with_timeout): Made timeout type double.
4278
4279         * options.h (struct options): New members read_timeout,
4280         dns_timeout, and connect_timeout.
4281         Use them.
4282
4283 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
4284
4285         * init.c (simple_atof): New function.
4286         (cmd_time): Use it.
4287         (cmd_bytes): Accept things like "1.5k" and such.  Use simple_atof
4288         to parse decimals.
4289
4290         * retr.c (limit_bandwidth): Adjust each sleep by the error of the
4291         previous one.
4292
4293 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
4294
4295         * main.c (main): Use setoptval() for setting the options.  Use
4296         run_command for `-e'.
4297
4298         * init.c (parse_line): Rewritten to return COMIND right away.
4299         Changed linkage to static.
4300         (run_wgetrc): Use the available comind when calling setval, so it
4301         doesn't have to be computed twice.
4302         (setval_internal): New function, runs the command's action without
4303         any error checking.
4304         (setoptval): New function, does what setval used to do, but exits
4305         in case of error.
4306         (run_command): New function.
4307
4308 2003-09-21  Hrvoje Niksic  <hniksic@xemacs.org>
4309
4310         * connect.c (select_fd): Change MAXTIME's type to double.  Handle
4311         its decimal part.
4312
4313         * retr.c (sleep_between_retrievals): In the random-wait case, use
4314         random_float() to wait between 0 and 2*opt.wait seconds.
4315
4316         * utils.c (run_with_timeout): Accept `double' timeouts.  Correctly
4317         handle timeout values in (0, 1) range.
4318         (random_float): New function.
4319
4320         * options.h (struct options): Change the types of wait, waitretry,
4321         and timeout to double.
4322
4323         * init.c (cmd_time): Accept floating point time.
4324
4325 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
4326
4327         * retr.c (get_contents): Cosmetic fixes.
4328
4329 2003-09-20  Hrvoje Niksic  <hniksic@xemacs.org>
4330
4331         * url.c (uri_merge): Get rid of uri_merge_1.
4332         (uri_merge): Merge "foo//", "bar" as "foo//bar", not "foo///bar",
4333         i.e. don't add an extra slash merely because BASE ends with two
4334         slashes.
4335         (parse_credentials): Renamed from parse_uname.  Rewrittern in
4336         standard [beg, end) calling style.
4337         (url_skip_credentials): Renamed from url_skip_uname.  Made static.
4338         (url_skip_credentials): Include # and ; as terminators.  Old code
4339         would mistakenly consider "http://foo.com#hniksic@iskon.hr" to
4340         contain a username.
4341         (url_skip_scheme): Removed because it was unused.
4342         (url_has_scheme): Require "scheme" to be at least one char long.
4343
4344 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
4345
4346         * url.c (url_file_name): Expect NULL dir_prefix.
4347
4348         * init.c (cmd_file): Use a macro to prevent multiple #ifdef
4349         WINDOWS.
4350         (defaults): Set dir_prefix to NULL by default.
4351
4352 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
4353
4354         * safe-ctype.h (_sch_test): Cast BIT to unsigned char, like latest
4355         gcc does.
4356
4357 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
4358
4359         * wget.h (BOUNDED_TO_ALLOCA): Evaluate PLACE only once.
4360         (ARRAY_SIZE): Renamed to countof.  All callers updated.
4361
4362 2003-09-19  Hrvoje Niksic  <hniksic@xemacs.org>
4363
4364         * main.c (main): New option --strict-comments.
4365
4366         * html-parse.c (find_comment_end): New function: simple BM search
4367         for "-->".
4368         (map_html_tags): Use it if looking at a comment and not in strict
4369         comments mode.
4370
4371 2003-09-17  Aurelien Marchand  <artaxerxes@users.sf.net>
4372
4373         * ftp.h: Added OS400 system in enum
4374         * ftp-basic.c: recognize OS400 systems
4375         * ftp.c: don't prepend the CWD if talking to OS400, since it
4376         breaks the change in library
4377
4378 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
4379
4380         * retr.c (get_contents): Pass the correct argument to ssl_iread.
4381
4382 2003-09-18  Hrvoje Niksic  <hniksic@xemacs.org>
4383
4384         * safe-ctype.h: Don't #define ctype.h macros to errors because
4385         that loses when someone #include's ctype.h after safe-ctype.h.
4386
4387 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
4388
4389         * url.c: Undef U, W, C after use.
4390
4391 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
4392
4393         * init.c (cmd_spec_restrict_file_names): Allow the OS setting to
4394         be augmented by ",nocontrol" which means don't escape the control
4395         characters, but otherwise keep OS settings.
4396
4397         * url.c (file_unsafe_char): Deleted.
4398         (append_uri_pathel): Query filechr_table directly.
4399         (filechr_table): Separated Unix, Windows, and control-unsafe
4400         characters.
4401
4402 2003-09-17  Hrvoje Niksic  <hniksic@xemacs.org>
4403
4404         * url.c (url_escape_1): New function.
4405         (url_escape): Use it.
4406         (sync_path): Handle pathological cases where u->file and u->dir
4407         contain really strange characters.
4408         (ENCODE): Deleted.
4409         (REENCODE): Deleted.
4410
4411 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
4412
4413         * url.c (url_file_name): Don't reallocate FNAME if the file
4414         doesn't exist, as is usually the case.
4415
4416         * utils.c (unique_name): New flag allow_passthrough.
4417
4418 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
4419
4420         * utils.c (wtimer_sys_diff): Convert the time difference to signed
4421         __int64, then to double.  This works around MS VC++ 6 which can't
4422         convert unsigned __int64 to double directly.
4423
4424 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
4425
4426         * Makefile.in (clean): Also remove the core.<number> files
4427         produced by recent Linux systems.
4428
4429 2003-09-16  Hrvoje Niksic  <hniksic@xemacs.org>
4430
4431         * http.c (post_file): Don't pad the file if it's not large
4432         enough.  Bail out instead.
4433
4434 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
4435
4436         * retr.c (get_contents): Reduce the buffer size to the amount of
4437         data that may pass through for one second.  This prevents long
4438         sleeps when limiting bandwidth.
4439
4440         * connect.c (connect_to_one): Reduce the socket's RCVBUF when
4441         bandwidth limitation to small values is requested.
4442
4443 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
4444
4445         * progress.c (update_speed_ring): Moved the speed ring update to a
4446         separate function and documented it better.
4447
4448         * progress.c: Use `double' for most timers to support granularity
4449         smaller than 1ms.
4450
4451 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
4452
4453         * wget.h (XDIGIT_TO_XCHAR): Implement as index into a literal
4454         string.
4455         (XDIGIT_TO_xchar): Ditto.
4456
4457 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
4458
4459         * utils.c: Change the type of timer-related functions from long to
4460         double, for better precision.  On machines supporting gettimeofday
4461         the timers now work with granularity of less than one millisecond.
4462
4463 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
4464
4465         * cookies.c (parse_set_cookies): Fixed the parser to handle more
4466         edge conditions.
4467         (test_cookies): New function, contains a test suite for
4468         parse_set_cookies.
4469
4470 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
4471
4472         * url.c (strpbrk_or_eos): Implement as a macro under Gcc.
4473
4474 2003-09-15  Hrvoje Niksic  <hniksic@xemacs.org>
4475
4476         * cookies.c (parse_set_cookies): Allow trailing space in
4477         set-cookies header.  Also, allow any amount of whitespace, not
4478         only one character.  Allow empty set-cookies header without
4479         spewing an error.
4480
4481 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
4482
4483         * url.c (append_uri_pathel): Use opt.restrict_file_names when
4484         calling file_unsafe_char.
4485
4486         * init.c: New command restrict_file_names.
4487
4488         * main.c (main): New option --restrict-file-names[=windows,unix].
4489
4490         * url.c (url_file_name): Renamed from url_filename.
4491         (url_file_name): Add directory and hostdir prefix here, not in
4492         mkstruct.
4493         (append_dir_structure): New function, does part of the work that
4494         used to be in mkstruct.  Iterates over path elements in u->path,
4495         calling append_uri_pathel on each one to append it to the file
4496         name.
4497         (append_uri_pathel): URL-unescape a path element and reencode it
4498         with a different set of rules, more appropriate for handling of
4499         files.
4500         (file_unsafe_char): New function, uses a lookup table to decide
4501         whether a character should be escaped for use in file name.
4502         (append_string): New utility function.
4503         (append_char): Ditto.
4504         (file_unsafe_char): New argument restrict_for_windows, decide
4505         whether Windows file names should be escaped in run-time.
4506
4507         * connect.c: Include <stdlib.h> to get prototype for abort().
4508
4509 2003-09-14  Hrvoje Niksic  <hniksic@xemacs.org>
4510
4511         * utils.c (wtimer_sys_set): Extracted the code that sets the
4512         current time here.
4513         (wtimer_reset): Call it.
4514         (wtimer_sys_diff): Extracted the code that calculates the
4515         difference between two system times here.
4516         (wtimer_elapsed): Call it.
4517         (wtimer_elapsed): Don't return a value smaller than the previous
4518         one, which could previously happen when system time is set back.
4519         Instead, reset start time to current time and note the elapsed
4520         offset for future calculations.  The returned times are now
4521         guaranteed to be monotonically nondecreasing.
4522
4523 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
4524
4525         * host.c (lookup_host): Print the result of the DNS lookup.
4526
4527 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
4528
4529         * init.c (cmd_boolean): Accept yes/no along with on/off.
4530         (cmd_lockable_boolean): Ditto.
4531
4532 2003-09-10  Hrvoje Niksic  <hniksic@xemacs.org>
4533
4534         * init.c: New command dns_cache.
4535
4536         * main.c (main): New option --dns-cache[=off].
4537
4538 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
4539
4540         * config.h.in: Initialize HAVE_GETADDRINFO and ENABLE_IPV6.
4541
4542         * all: Use #ifdef ENABLE_IPV6 instead of the older INET6.  Use
4543         HAVE_GETADDRINFO for getaddrinfo-related stuff.
4544
4545 2003-09-09  Hrvoje Niksic  <hniksic@xemacs.org>
4546
4547         * url.c (url_parse): Return an error if the URL contains a [...]
4548         IPv6 numeric address and we don't support IPv6.
4549
4550 2003-09-05  Hrvoje Niksic  <hniksic@xemacs.org>
4551
4552         * url.c (is_valid_ipv6_address): Modified to not require
4553         zero-terminated strings.
4554         (is_valid_ipv4_address): Ditto.
4555
4556 2003-09-05  Mauro Tortonesi <mauro@deepspace6.net>
4557
4558         src/url.c: added RFC 2732 compliance for URL parsing. The
4559         functions is_*_address valid are a modified version of
4560         glibc 2.3.2 inet_pton's code.
4561
4562 2003-09-03  Ahmon Dancy  <dancy@dancysoft.com>
4563
4564         * main.c init.c options.h: Added --retry-connrefused option so
4565         that Connection Refused failures are treated as non-fatal (when
4566         trying to retrieve from busy servers).
4567
4568         * wget.h: New CONNECT_ERROR macro for encapsulating this
4569         modification.
4570
4571         * ftp.c http.c : Use CONNECT_ERROR macro in places where
4572         ECONNREFUSED was checked.
4573
4574 2003-01-11  Ian Abbott  <abbotti@mev.co.uk>
4575
4576         * ftp.c (ftp_retrieve_glob): Reject insecure filenames as determined
4577         by calling new function has_insecure_name_p.  This is based on a
4578         patch by Red Hat.
4579
4580         * fnmatch.c (has_insecure_name_p): New function: returns non-zero
4581         if filename starts with `/' or contains `../' and is therefore
4582         considered insecure.
4583
4584         * fnmatch.h: Declare has_insecure_name_p().
4585
4586 2002-08-03  Hrvoje Niksic  <hniksic@xemacs.org>
4587
4588         * init.c (cmd_file): Allocate RESULT correctly.
4589
4590 2002-07-24  Hrvoje Niksic  <hniksic@xemacs.org>
4591
4592         * recur.c (retrieve_tree): Check whether downloaded_html_set is
4593         non-NULL before using it.
4594
4595 2002-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
4596
4597         * html-parse.c (NAME_CHAR_P): Allow almost any character here.
4598
4599 2002-05-24  Hrvoje Niksic  <hniksic@arsdigita.com>
4600
4601         * progress.c (bar_set_params): Fall back to dot progress if the
4602         terminal type is "emacs".
4603
4604 2002-05-20  Hrvoje Niksic  <hniksic@arsdigita.com>
4605
4606         * log.c: Don't #undef WGET_USE_STDARG.
4607
4608 2002-05-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4609
4610         * hash.c (prime_size): Store the offset of the prime number in the
4611         prime table.  When searching, start with the given offset.
4612         (hash_table_new): Pass the pointer to ht->prime_offset to
4613         prime_size.
4614         (grow_hash_table): Ditto.
4615         (prime_size): Make 13 the first prime to make empty hash tables
4616         slightly smaller.
4617
4618 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
4619
4620         * recur.c (download_child_p): Minor optimization to avoid an
4621         unnecessary additional call to schemes_are_similar_p function.
4622
4623 2002-05-16  Ian Abbott  <abbotti@mev.co.uk>
4624
4625         * url.c (schemes_are_similar_p): New function to test enumerated
4626         scheme codes for similarity.
4627
4628         * url.h: Declare it.
4629
4630         * recur.c (download_child_p): Use it to compare schemes.  This
4631         also fixes a bug that allows hosts to be spanned (without the
4632         -H option) when the parent scheme is https and the child's is
4633         http or vice versa.
4634
4635 2002-05-14  Bill Richardson  <bill@riverstonenet.com>
4636
4637         * ftp.c (getftp): Don't ftruncate stdout.
4638
4639         * http.c (gethttp): Don't ftruncate stdout.
4640
4641 2002-05-09  Ian Abbott  <abbotti@mev.co.uk>
4642
4643         * cmpt.c (strptime_internal): Synched with glibc-2.1.3.
4644         (get_number): Ditto.
4645         (get_alt_number): Ditto.
4646         (__isleap): New function-like macro used by strptime.
4647         (day_of_the_week): New function used by strptime.
4648         (day_of_the_year): Ditto.
4649         (__mon_yday): Now shared by mktime and strptime implementations.
4650
4651 2002-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
4652
4653         * cookies.c (check_domain_match): Use match_tail in case
4654         insensitive mode.
4655
4656         * utils.c (match_tail): Allow the caller to specify case
4657         insensitive mode.
4658
4659         * cookies.c (store_cookie): When expiry_time is 0, print it as
4660         undefined, not indefinite.
4661
4662 2002-05-07  Ian Abbott  <abbotti@mev.co.uk>
4663
4664         * cookies.c (cookie_jar_process_set_cookie): Do not store
4665         discarded cookie.
4666
4667 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
4668
4669         * cookies.c (check_domain_match): Allow cookies to be set for
4670         subdomains of unknown top-level domains under some circumstances.
4671
4672 2002-04-21  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
4673
4674         * gen_ssl.c:
4675         - allow checking of server cert
4676         - allow defining client cert type
4677         - allow limit of ssl protocol
4678         - check more return values
4679         - added debug message on break
4680
4681 2002-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
4682
4683         * recur.c (download_child_p): Revert order of items in check
4684         number 6 for clarity.
4685
4686 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
4687
4688         * init.c: Ditto.
4689
4690         * main.c: Ditto.
4691
4692         * http.c: Use the new interface.
4693
4694         * cookies.c: Provide an OO-style "cookie jar" interface to enable
4695         separate cookie jars.
4696
4697         * http.c (http_atotm): Declare argument as const.
4698
4699 2002-04-20  Hrvoje Niksic  <hniksic@arsdigita.com>
4700
4701         * cookies.c (cookie_new): Default to PORT_ANY.
4702         (find_cookie_chain_exact): Only search by DOMAIN.
4703         (find_matching_cookie): Also check that PORT matches.
4704         (store_cookie): Only match the domain.
4705         (set_cookie_header_cb): When a cookie "fakes" a domain, assume it
4706         is valid for that host rather than discarding it completely.
4707         (find_matching_chains): Don't search by PORT.
4708         (matching_cookie): Also match PORT.
4709         (load_cookies): Set the port if specified, otherwise leave it as
4710         ANY.
4711         (save_cookies_mapper): Save the port if specified, otherwise leave
4712         it empty.
4713
4714 2002-04-19  Thomas Lussnig  <thomas.lussnig@bewegungsmelder.de>
4715
4716         * init.c: The option `egdfile' was not in sort order.
4717
4718 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4719
4720         * ftp.c (getftp): Treat directories that begin with <letter>: as
4721         absolute.
4722         (getftp): Strip trailing slashes from con->id before merging it
4723         with TARGET.
4724
4725 2002-04-16  Hrvoje Niksic  <hniksic@arsdigita.com>
4726
4727         * http.c (gethttp): If Content-Type is not given, assume
4728         text/html.
4729
4730 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
4731
4732         * recur.c (download_child_p): Don't ignore rejection of HTML
4733         documents that are themselves leaves of recursion.
4734
4735 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
4736
4737         Makefile.in: Updated several dependencies for object files to take
4738         account of nested include files.
4739
4740 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
4741
4742         Makefile.in: The target `connect$o' (connect.o) now depends on
4743         `utils.h'
4744
4745 2002-04-15  Ian Abbott  <abbotti@mev.co.uk>
4746
4747         * host.c (SET_H_ERRNO): New function-like macro to set `h_errno'.
4748         (gethostbyname_with_timeout): Use it.
4749
4750         * utils.c: Don't define `SETJMP()', `run_with_timeout_env' or
4751         `abort_run_with_timeout()' when `USE_SIGNAL_TIMEOUT' is undefined.
4752
4753 2002-04-15  Hrvoje Niksic  <hniksic@arsdigita.com>
4754
4755         * host.c (getaddrinfo_with_timeout): New function.
4756         (gethostbyname_with_timeout): Ditto.
4757         (lookup_host): Use them.
4758
4759 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4760
4761         * utils.c (number_to_string): Handle the case when n < -INT_MAX.
4762
4763 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4764
4765         * init.c (comind): Use a marginally faster implementation of
4766         binary search.  To quote Martin Buchholz, "a nanosecond saved is a
4767         nanosecond earned."
4768
4769 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4770
4771         * main.c (print_help): Document `--post-data' and `--post-file'.
4772
4773 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4774
4775         * http.c (gethttp): Ditto.
4776
4777         * retr.c (retrieve_url): Initialize variables to appease the
4778         compiler.
4779
4780         * gen_sslfunc.c (ssl_iread): Don't handle EINTR when calling
4781         select_fd.
4782         (ssl_iwrite): Ditto.
4783
4784         * connect.c (select_fd): Rewrite to handle EINTR.  Set errno to
4785         ETIMEDOUT in case of timeout.
4786         (iread): No need to handle EINTR when calling select_fd.
4787         (iwrite): Ditto.
4788
4789 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4790
4791         * retr.c (retrieve_url): Make sure that POST is not honored for
4792         redirections.
4793
4794         * http.c (gethttp): Send the POST data when requested.
4795         (post_file): New function.
4796         (gethttp): Use it.
4797
4798         * main.c (main): Ditto.
4799
4800         * init.c: Add new options.
4801
4802         * options.h (struct options): New options post_data and
4803         post_file_name.
4804
4805 2002-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
4806
4807         * connect.c (connect_with_timeout): Firing SIGALRM can result in
4808         connect() exiting with EINTR.  Treat EINTR the same as ETIMEDOUT.
4809
4810 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4811
4812         * connect.c (connect_with_timeout): Use it.
4813
4814         * utils.c (run_with_timeout): New function.
4815
4816 2002-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
4817
4818         * url.c (getproxy): Accept a struct url argument.  This obviates
4819         the need for USE_PROXY_P.
4820
4821         * retr.c (retrieve_url): Allow proxy to be a non-FTP URL.
4822
4823         * ftp.c (getftp): Recognize FWTK-style proxy.
4824
4825 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4826
4827         * config.h.in: Only define _VA_LIST when compiled with gcc.
4828
4829 2002-04012  Ian Abbott  <abbotti@mev.co.uk>
4830
4831         * http.c (http_loop): Compensate for MS Windows two-second
4832         granularity of file modification time when comparing timestamps.
4833
4834         * ftp.c (ftp_retrieve_list): Ditto.
4835
4836 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
4837
4838         * utils.c (has_html_suffix_p): New function to test filename for
4839         common html extensions.
4840
4841         * utils.h: Declare it.
4842
4843         * http.c (http_loop): Use it instead of previous test.
4844
4845         * retr.c (retrieve_url): Ditto.
4846
4847         * recur.c (download_child_p): Ditto.
4848
4849 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4850
4851         * config.h.in: Define _VA_LIST on Solaris to prevent stdio.h from
4852         declaring va_list.
4853         From Kevin Rodgers <kevinr@ihs.com>.
4854
4855 2002-04-12  Ian Abbott  <abbotti@mev.co.uk>
4856
4857         * Makefile.in: Specify libtool mode explicitly when linking.
4858
4859 2002-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
4860
4861         * connect.c (connect_with_timeout): New function.
4862         (connect_to_one): Use it.
4863
4864         * config.h.in: Add stubs for HAVE_SIGSETJMP, HAVE_SIGBLOCK, and
4865         HAVE_SETJMP_H.
4866
4867 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4868
4869         * log.c: Set WGET_USE_STDARG if __STDC__ is defined and stdarg.h
4870         is present.
4871
4872 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4873
4874         * progress.c (bar_create): If INITIAL is larger than TOTAL, fix
4875         TOTAL.
4876         (bar_finish): Likewise.
4877
4878 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4879
4880         * html-url.c (tag_handle_form): New function.  Pick up form
4881         actions and mark them for conversion only.
4882
4883 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4884
4885         * progress.c (struct progress_implementation): Use PARAMS when
4886         declaring the parameters of *create, *update, *finish, and
4887         *set_params.
4888
4889         * netrc.c: Ditto.
4890
4891         * http.c: Reformat some function definitions so that ansi2knr can
4892         read them.
4893
4894         * hash.c (struct hash_table): Use the PARAMS macro around
4895         parameters in the declaration of hash_function and test_function.
4896         (prime_size): Spell 2580823717UL and 3355070839UL as (unsigned
4897         long)0x99d43ea5 and (unsigned long)0xc7fa5177 respectively, so
4898         that pre-ANSI compilers can read them.
4899         (find_mapping): Use PARAMS when declaring EQUALS.
4900         (hash_table_put): Ditto.
4901
4902         * ftp.h: Wrap the parameters of ftp_index declaration in PARAMS.
4903
4904         * cookies.c (cookie_new): Use (unsigned long)0 instead of 0UL,
4905         which was unsupported by pre-ANSI compilers.
4906
4907         From Nelson H. F. Beebe <beebe@math.utah.edu>, for the most part.
4908
4909 2002-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
4910
4911         * url.c (url_filename): Use compose_file_name regardless of
4912         whether opt.dirstruct is set.
4913         (mkstruct): Don't handle the query and the reencoding of DIR; that
4914         is done in compose_file_name.
4915
4916 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
4917
4918         * wget.h: Ditto for extern char *exec_name.
4919
4920         * options.h: Don't guard against OPTIONS_DEFINED_HERE -- it is
4921         perfectly legal to follow an `extern' with a non-`extern' ones,
4922         provided the types match.
4923
4924         * main.c: Don't define OPTIONS_DEFINED_HERE.
4925
4926 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
4927
4928         * progress.c (create_image): Revert to calculating ETA based on
4929         average download speed.
4930         (create_image): Don't print ETA until the download has been active
4931         for at least 3 seconds.
4932         (create_image): When ETA is not available, don't print anything.
4933         The previous version would print --:--.
4934
4935 2002-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
4936
4937         * progress.c (bar_update): Keep updating a subinterval until it
4938         reaches or exceeds a watermark.  That way the measurement will be
4939         guaranteed to span a configurable minimum of time.  The current
4940         default is 3s in 30 100ms intervals.
4941
4942 2002-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
4943
4944         * progress.c (bar_update): Maintain an array of the time it took
4945         to perform previous 30 network reads.
4946         (create_image): Calculate the download speed and ETA based on the
4947         last 30 reads, not the entire download.
4948         (create_image): Make sure that the ETA is not changed more than
4949         once per second.
4950
4951 2002-04-09  Ian Abbott  <abbotti@mev.co.uk>
4952
4953         * mswindows.c (borland_utime): New function conditionally defined
4954         when `HACK_BCC_UTIME_BUG' is defined.  A reimplementation of
4955         `utime()' as Borland's `utime()' function is broken on Windows 9x
4956         systems.  (Original patch by Chin-yuan Kuo <sr1111111@yahoo.com.tw>.)
4957
4958 2002-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
4959
4960         * ftp.c (ftp_loop): Propagate the result of ftp_retrieve_glob.
4961
4962 2002-03-26  Ian Abbott  <abbotti@mev.co.uk>
4963
4964         * Makefile.in: Updated several dependencies for object files.
4965
4966 2002-03-20  Ian Abbott  <abbotti@mev.co.uk>
4967
4968         * mswindows.c: Include "utils.h".
4969
4970 2002-03-18  Ian Abbott  <abbotti@mev.co.uk>
4971
4972         * host.h: Don't include netdb.h on windows.
4973
4974 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
4975
4976         * recur.c (retrieve_tree): Handle the case when start_url doesn't
4977         parse.
4978
4979 2002-02-19  Andreas Damm  <andreas-sourceforge@radab.org>
4980
4981         * wget.h (DO_REALLOC_FROM_ALLOCA): Multiply with sizeof(type) when
4982         calling xmalloc and memcpy.
4983
4984 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
4985
4986         * host.h: Include Unix-specific includes #ifndef WINDOWS.
4987         Patch originally provided by Christian Lackas.
4988
4989 2002-02-11  Christian Lackas  <delta@lackas.net>
4990
4991         * recur.c: recurive downloading for https fixed.
4992
4993 2002-02-19  Alan Eldridge  <alane@geeksrus.net>
4994
4995         * host.h: Also include <netinet/in.h> and <sys/socket.h>.
4996
4997         * ftp-basic.c: Also include <netinet/in.h>.
4998
4999 2002-02-05  Ian Abbott  <abbotti@mev.co.uk>
5000
5001         * http.c (gethttp): when -c used, mark already fully retrieved
5002         file as successfully retrieved.
5003
5004 2002-02-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5005
5006         * url.c (url_parse): Don't treat '?' as query string separator
5007         when parsing FTP URLs.
5008
5009 2002-02-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5010
5011         * html-url.c (tag_handle_meta): Don't crash on <meta
5012         http-equiv=refresh> where content is missing.
5013
5014 2002-01-31  Herold Heiko  <Heiko.Herold@previnet.it>
5015
5016         * ftp-basic.c, host.c: don't include sys/socket.h, arpa/inet.h,
5017         netdb.h on windows.
5018
5019 2002-01-30  Hrvoje Niksic  <hniksic@arsdigita.com>
5020
5021         * retr.c (retrieve_url): Remove redirection cycle detection.  This
5022         is because some sites legitimately redirect the user back to the
5023         same location, e.g. after an authorization check performed by
5024         another page.  MAX_REDIRECTIONS is still used to prevent infinite
5025         redirection loops.
5026
5027 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5028
5029         * http.c (gethttp): Wrap host name in square brackets if it
5030         contains a colon.
5031
5032 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5033
5034         * url.c (url_parse): Allow all hex digits, not only decimal ones,
5035         to form an IP address.
5036
5037 2002-01-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5038
5039         * url.c (urlchr_table): Make square braces reserved, so we can
5040         parse http://[::1]/.
5041         (url_parse): Handle host in braces.
5042         (url_string): If url->host contains colons, wrap it in braces.
5043
5044 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5045
5046         * connect.c (resolve_bind_address): New function.
5047         (connect_to_one): Use it.
5048         (bindport): Ditto.
5049
5050         * init.c: Don't resolve bind-address here.
5051
5052         * host.c (wget_sockaddr_set_address): Would bug out with ADDR == NULL.
5053
5054 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5055
5056         * host.c (lookup_host): Use sizeof(ip4_address) to calculate the
5057         offset.
5058         (address_list_new): Use map_ipv4_to_ip.
5059         (wget_sockaddr_set_address): Convert ADDR to IPv4 before using it
5060         in IPv4 context.
5061
5062 2002-01-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5063
5064         * source: Integrated IPv6 support.
5065         Written by Thomas Lussnig <thomas.lussnig@bewegungsmelder.de>.
5066
5067 2002-01-15  Ian Abbott  <abbotti@mev.co.uk>
5068
5069         * init.c (cmd_file): Change `\' to `/' for Windows (yes, really!)
5070         (cmd_directory): New function. Like cmd_file(), but strips
5071         trailing directory separators.
5072         (commands): Change action for "dirprefix" from `cmd_file' to
5073         `cmd_directory'.
5074
5075         * utils.c (make_directory): Allow intermediate `mkdir' calls to
5076         fail, as not all path components that do not exist should be
5077         directory components, especially under Windows.
5078
5079 2002-01-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5080
5081         * netrc.c (parse_netrc): Skip leading whitespace before testing
5082         whether the line is empty.  Empty lines still contain the line
5083         terminator.
5084
5085 2002-01-15  Hrvoje Niksic  <hniksic@arsdigita.com>
5086
5087         * gen_sslfunc.c (ssl_iread): Call select on the file descriptor
5088         only if no data is pending in SSL buffers.
5089         From tony@bluetail.com.
5090
5091 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
5092
5093         * headers.c (header_get): Strip trailing whitespace from the
5094         header.
5095
5096 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
5097
5098         * url.c (parse_uname): URL-decode *USER and *PASSWD.
5099
5100 2002-01-07  Ian Abbott <abbotti@mev.co.uk>
5101
5102         * url.c (uri_merge_1): Deal with "net path" relative URL (one that
5103         starts with "//").
5104
5105 2002-01-14  Hrvoje Niksic  <hniksic@arsdigita.com>
5106
5107         * http.c (gethttp): Invalidate SOCK if get_contents encountered an
5108         error.
5109
5110 2001-12-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5111
5112         * version.c: Wget 1.8.1 is released.
5113
5114 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5115
5116         * version.c: Wget 1.8.1-pre3 is released.
5117
5118 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5119
5120         * recur.c (retrieve_tree): Enqueue the canonical representation of
5121         start_url, so that the test against dl_url_file_map works.
5122
5123 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5124
5125         * log.c (logputs): Check for requested verbosity before printing
5126         anything.
5127
5128 2001-12-19  Hrvoje Niksic  <hniksic@arsdigita.com>
5129
5130         * html-url.c (tag_handle_link): Treat the "shortcut icon" link as
5131         inline.
5132
5133 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
5134
5135         * recur.c (retrieve_tree): Make a copy of file obtained from
5136         dl_url_file_map because the code calls xfree(file) later.
5137
5138 2001-12-18  Hrvoje Niksic  <hniksic@arsdigita.com>
5139
5140         * recur.c (register_html): Maintain a hash table of HTML files
5141         along with the list.  Disallow duplicates.
5142         (retrieve_tree): Use downloaded_html_set to check whether the file
5143         found in dl_url_file_map is an HTML file, and descend into it if
5144         so.
5145         (convert_all_links): Don't guard against duplicates in
5146         downloaded_html_list, since they are no longer possible.
5147
5148 2001-12-18  Ian Abbott  <abbotti@mev.co.uk>
5149
5150         * recur.c (retrieve_tree): Pass on referring URL when retrieving
5151         recursed URL.
5152
5153 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5154
5155         * version.c: Wget 1.8.1-pre2 is released.
5156
5157 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5158
5159         * retr.c (sleep_between_retrievals): Simplify indentation.
5160
5161 2001-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
5162
5163         * gen_sslfunc.c (ssl_init_prng): Use random_number to get a byte
5164         of "randomness" at a time.
5165         (ssl_init_prng): Don't seed the PRNG; random_number will do that.
5166
5167         * retr.c (sleep_between_retrievals): Use it.  Make sure that the
5168         random amount averages in opt.wait.
5169         (sleep_between_retrievals): Don't seed the PRNG; random_number
5170         will do that.
5171
5172         * utils.c (random_number): New function.
5173
5174 2001-12-14  Hrvoje Niksic  <hniksic@arsdigita.com>
5175
5176         * url.c (path_simplify): Move here from utils.c, and make static.
5177
5178 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5179
5180         * init.c (wgetrc_file_name): Print correct message when loading
5181         getenv("WGETRC") fails.
5182
5183 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5184
5185         * recur.c (register_download): Don't abort when one URL references
5186         two different files.
5187
5188 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5189
5190         * http.c (gethttp): Check for conn->scheme, not u->scheme, before
5191         calling ssl_iwrite.
5192
5193 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5194
5195         * version.c: Wget 1.8.1-pre1 is released.
5196
5197 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5198
5199         * res.c (matches): Fix broken URL in the docstring.
5200
5201 2001-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
5202
5203         * html-url.c (tag_url_attributes): Mark <embed href=...> as
5204         external.
5205
5206 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5207
5208         * url.c (get_urls_file): Cosmetic changes.
5209
5210 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5211
5212         * html-url.c (append_one_url): Resurrect warning when unable to
5213         resolve a relative link.
5214
5215 2001-12-12  Hrvoje Niksic  <hniksic@arsdigita.com>
5216
5217         * html-url.c (collect_tags_mapper): Break into several functions.
5218         (tag_url_attributes): Collect <embed href=...>.
5219
5220 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5221
5222         * host.c: New type ipv4_address.  Use it consistently instead of
5223         `unsigned char[4]' and `unsigned char *'.
5224         (pretty_print_address): Accept a `const void *', to require even
5225         less casting.
5226
5227 2001-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
5228
5229         * ftp-ls.c (ftp_parse_vms_ls): Fix obvious memory leaks.
5230
5231 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5232
5233         * main.c (main): Initialize progress after fork_to_background, so
5234         that it knows when to use dots.
5235
5236         * mswindows.c (ws_hangup): Call log_request_redirect_output.
5237
5238         * utils.c (fork_to_background): Print the PID of the child
5239         process.
5240
5241         * log.c (log_request_redirect_output): Set a flag that output
5242         redirection has been requested.  Doing anything else in a signal
5243         handler is unsafe.
5244         (check_redirect_output): New function: check whether redirection
5245         has been requested and, if so, call redirect_output().
5246         (logputs): Call check_redirect_output.
5247         (logprintf): Ditto.
5248         (debug_logprintf): Ditto.
5249         (redirect_output): Print clearer messages.
5250
5251         * main.c (redirect_output_signal): Don't call
5252         redirect_output_signal directly.  Instead, call
5253         log_request_redirect_output.
5254
5255         * utils.c (memfatal): Ditto.
5256
5257         * progress.c (display_image): Use it.
5258
5259         * log.c (log_set_save_context): New function: allow the caller to
5260         turn off saving log context lines.
5261
5262 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5263
5264         * host.c (address_list_set_faulty): Uncomment a sanity check.
5265
5266 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5267
5268         * utils.c (long_to_string): Return a pointer after where the
5269         number ends.
5270         (long_to_string): Rename to number_to_string.
5271
5272 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5273
5274         * utils.c (path_simplify): Correctly handle the unlikely case that
5275         b starts out as path + 1.
5276
5277 2001-12-10  Hrvoje Niksic  <hniksic@arsdigita.com>
5278
5279         * utils.c (path_simplify): Rewrite, with better comments, and
5280         without the use of strcpy to move overlapping blocks.
5281
5282 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5283
5284         * init.c (cmd_spec_progress): Resurrect.  Check whether VAL is a
5285         valid progress type before setting it.
5286
5287 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5288
5289         * main.c (main): Remove stray debugging message.
5290
5291 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5292
5293         * progress.c (create_image): Fix ETA padding when hours are prined.
5294
5295 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5296
5297         * version.c: Wget 1.8 is released.
5298
5299 2001-12-09  Hrvoje Niksic  <hniksic@arsdigita.com>
5300
5301         * url.c (reencode_string): Declare static.
5302
5303         * res.c (registered_specs): Declare static.
5304
5305         * progress.c (current_impl_locked): Declare static.
5306
5307         * log.c (flush_log_p): Declare static.
5308         (needs_flushing): Ditto.
5309
5310         * http.c (digest_authentication_encode): Declare static.
5311
5312         * html-url.c (init_interesting): Declare static.
5313
5314         * host.c (host_name_addresses_map): Declare static.
5315
5316         * cookies.c (find_matching_chains): Declare static.
5317
5318         * ftp-ls.c (ftp_parse_vms_ls): Warn about the memory leak
5319         indicated by lint.
5320
5321         * utils.c (path_simplify): Remove unused variable STUB_CHAR.
5322
5323         * host.c (address_list_set_faulty): Document that INDEX is
5324         currently unused.
5325
5326         * url.c (rewrite_shorthand_url): Remove unused variable PATH.
5327
5328 2001-12-08  Hrvoje Niksic  <hniksic@arsdigita.com>
5329
5330         * version.c: Wget 1.8-pre2 is released.
5331
5332 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5333
5334         * progress.c (progress_handle_sigwinch): Set up the signal again.
5335
5336         * utils.c: Include <sys/termios.h>, where Solaris defines
5337         TIOCGWINSZ.
5338
5339         * progress.c (bar_create): Don't use the last column on the screen.
5340         (create_image): Pad ETA to constant size.  Pad SIZE to nine digits
5341         only until it exceeded them.
5342
5343 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5344
5345         * version.c: Wget 1.8-pre1 is released.
5346
5347 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5348
5349         * progress.c (progress_create): Make sure that, when the output is
5350         redirected, the progress implementation gets changed to the
5351         fallback one.
5352         (bar_set_params): Set current_impl_locked to 1 when "force" is
5353         specified.
5354         (progress_create): Don't change the progress implementation if
5355         current_impl_locked is non-zero.
5356
5357         * main.c (redirect_output_signal): Call
5358         progress_schedule_redirect.
5359
5360         * progress.c (progress_schedule_redirect): New function.
5361
5362 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5363
5364         * log.c (logvprintf): Restructure to allow being called multiple
5365         times.
5366         (logprintf): Call logvprintf in a loop.
5367         (debug_logprintf): Ditto.
5368
5369 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5370
5371         * gen_sslfunc.c (ssl_init_prng): Allow the user to disable EGD by
5372         setting egd_file it to empty string.
5373
5374         * main.c (main): Change the option name from --sslegdsock to
5375         --egd-file.
5376
5377 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5378
5379         * gen_sslfunc.c (ssl_init_prng): Make the printed message
5380         translatable.
5381
5382 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5383
5384         * url.c (scheme_disable): New function.
5385
5386         * main.c (main): Call ssl_init_prng from here rather than from
5387         init_ssl, so that it has a chance to disable support for https
5388         before a URL has been resolved.
5389
5390         * gen_sslfunc.c (ssl_init_prng): Seed with rand() if all else
5391         failed.
5392         (ssl_init_prng): Disable support for https if seeding the PRNG
5393         fails.
5394
5395 2001-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
5396
5397         * utils.c (read_whole_line): Handle lines beginning with \0.
5398
5399 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5400
5401         * recur.c (convert_all_links): Guard against duplicates in
5402         downloaded_html_files.
5403         (register_download): Don't invalidate similar-looking URLs.
5404         (match_except_index): New function.
5405
5406 2001-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
5407
5408         * utils.c (path_simplify): Document with test cases.
5409
5410 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
5411
5412         * gen_sslfunc.c: Ditto.
5413
5414         * rbuf.c: Include <string.h>.
5415
5416 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
5417
5418         * recur.c (retrieve_tree): Check whether the URL was already
5419         downloaded before downloading it again.
5420         (descend_child_p): Renamed to download_child_p.
5421         (register_download): When one URL is downloaded to a file already
5422         "owned" by another URL, delete all references that map any URL to
5423         that file.
5424         (register_delete_file): New function.
5425         (retrieve_tree): Use it after deleting a file.
5426
5427         * url.c (url_parse): Re-canonicalize the URL also if the path is
5428         empty, so that e.g. "http://www.server.com" ->
5429         "http://www.server.com/".
5430         (lowercase_str): Use ISUPPER instead of !ISLOWER.
5431
5432         * retr.c (retrieve_url): Use the canonical URL form when calling
5433         register_download().
5434
5435 2001-12-04  Ian Abbott <abbotti@mev.co.uk>
5436
5437         * snprintf.c (dopr): Use `unsigned int' as the second argument to
5438         va_arg when casting to `unsigned short' is intended.
5439
5440 2001-12-04  Herold Heiko  <Heiko.Herold@previnet.it>
5441
5442         * gen_sslfunc.c: on windows provide ssl crypto random 
5443           initialization through RAND_screen(); could possibly
5444           be not enough for strong ssl communication (see the 
5445           relevant manual page from the openssl package).
5446
5447 2001-12-04  Hrvoje Niksic  <hniksic@arsdigita.com>
5448
5449         * url.c (local_quote_string): Reenable quoting of question marks,
5450         but only when `--html-extension' is used.
5451
5452 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
5453
5454         * version.c: Wget 1.8-beta3 is released.
5455
5456 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
5457
5458         * snprintf.c (dopr): Cast the result of va_arg to short int and
5459         short unsigned int where these types are expected to be used.
5460
5461 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
5462
5463         * snprintf.c (dopr): Replace `short int' and `unsigned short int'
5464         with `int' when using it as the second argument to `va_arg'.
5465
5466 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
5467
5468         * host.c (address_list_new_one): New function.
5469         (lookup_host): Use it.
5470
5471 2001-12-03  Andre Majorel  <amajorel@teaser.fr>
5472
5473         * host.c (lookup_host): Don't initialize TMPSTORE directly because
5474         it's not legal C.
5475
5476 2001-12-03  Hrvoje Niksic  <hniksic@arsdigita.com>
5477
5478         * ftp-basic.c (ftp_port): Don't return HOSTERR if we fail getting
5479         the socket data.
5480
5481         * ftp.c: Ditto.
5482
5483         * http.c: No need to declare h_errno.
5484
5485         * host.c: Declare h_errno.
5486
5487 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5488
5489         * utils.c (file_merge): If BASE doesn't contain a slash, just
5490         return a copy of FILE.
5491
5492 2001-12-02  Hrvoje Niksic  <hniksic@arsdigita.com>
5493
5494         * version.c: Wget 1.8-beta2 is released.
5495
5496 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5497
5498         * ftp.c (getftp): When PWD fails, assume "/".
5499
5500         * ftp-basic.c (ftp_syst): Fix indentation.
5501
5502 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5503
5504         * url.c (get_urls_file): If opt.base_href is specified, merge each
5505         URL with the base.
5506
5507 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5508
5509         * main.c (print_help): Don't document the removed `-nh'.
5510
5511 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5512
5513         * url.c (url_full_path): Document better.
5514
5515         * http.c (gethttp): Use the full path when creating digest
5516         authorization.
5517
5518 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5519
5520         * cookies.c (path_matches): Return 0 if PREFIX doesn't begin with
5521         '/'.
5522
5523 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5524
5525         * cookies.c (path_matches): FULL_PATH doesn't begin with '/', but
5526         PREFIX does.
5527
5528 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5529
5530         * cookies.c (check_domain_match): Reimplement to match Netscape's
5531         "preliminary specification" for cookies.
5532
5533 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5534
5535         * url.c (replace_attr_refresh_hack): New function.
5536         (convert_links): Call replace_attr_refresh_hack for Refresh
5537         links.  It will add the "TMOUT; URL=" junk before the link.
5538
5539         * html-url.c (collect_tags_mapper): Set ID to the ID of the
5540         "content" attribute, not "http-equiv".
5541         (collect_tags_mapper): Don't use OFFSET to hack the raw_* values;
5542         instead, store the information that this entry belongs to a
5543         "refresh" link.
5544
5545 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5546
5547         * version.c: Wget 1.8-beta1 is released.
5548
5549 2001-12-01  Hrvoje Niksic  <hniksic@arsdigita.com>
5550
5551         * recur.c (retrieve_tree): Allow -p retrievals to exceed maximum
5552         depth by more than one.
5553
5554 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
5555
5556         * retr.c (retrieve_url): Don't allow more than 20 redirections.
5557
5558 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
5559
5560         * recur.c (retrieve_tree): Skip the non-inline entries when
5561         enqueuing the children of a leaf HTML node in -p mode.
5562         (descend_url_p): Ignore opt.no_parent when in -p mode and UPOS is
5563         "inline".
5564
5565         * html-url.c (get_urls_html): Don't accept dash_p_leaf_HTML.
5566         (collect_tags_mapper): When an entry is "inline", mark it as such.
5567
5568         * recur.c (descend_url_p): Fix test when checking for
5569         acceptance/rejection rules.
5570
5571 2001-10-31 Daniel BODEA <dali@dali-designs.com>
5572
5573         * netrc.c (search_netrc): When slack_default is 0, still look for
5574         an account with matching password, just not the "default account".
5575         HTTP Authorization using .netrc should now work as expected.
5576
5577 2001-11-30  T. Bharath  <TBharath@responsenetworks.com>
5578
5579         * http.c (persistent_available_p): Call SHUTDOWN_SSL if
5580         test_socket_open fails.
5581
5582 2001-11-30  Hrvoje Niksic  <hniksic@arsdigita.com>
5583
5584         * progress.c (display_image): Just print one CR to reset the
5585         cursor position.
5586
5587 2001-11-30  Christian Fraenkel  <c.fraenkel@gmx.net>
5588
5589         * init.c: New command `ssl_egd_sock'.
5590
5591         * main.c (main): New option `--sslegdsock'.
5592
5593         * gen_sslfunc.c (ssl_init_prng): Seed the RNG using EGD.
5594
5595 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
5596
5597         * cmpt.c (memmove): Include a simple memmove implementation.
5598
5599 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
5600
5601         * headers: Guard against header files being included twice.
5602
5603 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
5604
5605         * gen-md5.c: Use unsigned char * as the buffer argument to
5606         gen_md5_update.
5607
5608 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
5609
5610         * connect.h: Declare select_fd.
5611
5612 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
5613
5614         * recur.c (descend_url_p): When resolving no_parent, compare with
5615         start_url, not parent url.  Otherwise link from /a/b/ to /a/c/
5616         wouldn't be followed, although the download started from /a/.
5617
5618 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
5619
5620         * config.h.ms, mswindows.h: defined HAVE_ISATTY, use _isatty for
5621         MS VC; somebody with Borland compiler please check and provide
5622         patch if possible;
5623
5624         * cmpt.c: provided a usleep emulation.
5625
5626 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
5627
5628         * host.c (address_list_new): Initialize al->faulty.
5629
5630 2001-11-29  Hrvoje Niksic  <hniksic@arsdigita.com>
5631
5632         * http.c (http_process_range): Accept the broken output of
5633         "JavaWebServer/1.1.1".
5634
5635 2001-11-28  Hrvoje Niksic  <hniksic@arsdigita.com>
5636
5637         * progress.c (dot_set_params): If PARAMS is unspecified, use
5638         dot_style, if available.
5639
5640         * init.c: Ditto.
5641
5642         * main.c (main): Resurect --dot-style.
5643
5644         * progress.c (dot_finish): Print the quantity if we're left at the
5645         beginning of a row.
5646
5647 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5648
5649         * cmpt.c (random): Removed.
5650
5651         * retr.c (sleep_between_retrievals): Use the more portable rand()
5652         instead of random().
5653
5654 2001-11-27  Ian Abbott <abbotti@mev.co.uk>
5655
5656         * retr.c (retrieve_from_file): Initialize `new_file' to NULL to
5657         prevent seg fault.
5658
5659 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5660
5661         * connect.c (connect_to_many): Use address_list_set_faulty to
5662         prevent the faulty address from being reused.
5663
5664         * host.c (address_list_set_faulty): New function.
5665         (address_list_get_bounds): New function, instead of
5666         address_list_count.
5667
5668 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5669
5670         * url.c (convert_links): Don't translate %d-%d.
5671
5672         * main.c (print_help): Remove stray HAVE_RANDOM code.
5673
5674 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5675
5676         * ftp.c (getftp): Improve output after sending PASV.  Don't
5677         attempt to "look up" the IP address we already know; call
5678         connect_to_one directly.
5679
5680 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5681
5682         * progress.c: Change the default progress implementation to "bar".
5683
5684 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5685
5686         * progress.c (bar_create): Print two newlines.
5687
5688 2001-11-27  Hrvoje Niksic  <hniksic@arsdigita.com>
5689
5690         * cmpt.c (random): New function, a simple-minded replacement for
5691         random() on systems that don't have it.
5692
5693 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5694
5695         * config.h.in: Put a HAVE_USLEEP stub.
5696
5697         * cmpt.c (usleep): Replacement implementation of usleep using
5698         select.
5699
5700         * init.c: New option init_rate.
5701
5702         * main.c (main): New option --limit-rate.
5703
5704         * retr.c (limit_bandwidth): New function.
5705         (get_contents): Call it to limit the bandwidth used when
5706         downloading.
5707
5708         * progress.c (dot_update): Would print the wrong download speed on
5709         rows other than the first one when the download was continued.
5710         (dot_finish): Ditto.
5711
5712 2001-11-26  Ian Abbott <abbotti@mev.co.uk>
5713
5714         * http.c (gethttp): fix undeclared variable 'err' when compiled
5715         with HAVE_SSL.
5716
5717 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5718
5719         * progress.c: Don't allocate new timers; use the timing data
5720         propagated from the caller.
5721
5722         * retr.c (get_contents): Allocate and use a timer.
5723
5724 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5725
5726         * http.c (last_host_ip): Made into an address_list.
5727         (invalidate_persistent): Release pc_last_host_ip.
5728         (register_persistent): Use lookup_host.
5729         (persistent_available_p): Check for equality of hosts using
5730         address_list_match_all.  Call address_list_release.
5731         (http_cleanup): New function.
5732
5733         * ftp.c (getftp): Use lookup_host and connect_to_many.
5734
5735         * http.c (gethttp): Use lookup_host and connect_to_many.
5736
5737         * connect.c (make_connection): Removed.
5738         (connect_to_one): New function.
5739         (connect_to_many): Ditto.
5740         (set_connection_host_name): Ditto.
5741
5742         * host.c (lookup_host): New function; new return type.
5743         (address_list_new): New function.
5744         (address_list_count): Ditto.
5745         (address_list_copy_one): Ditto.
5746         (address_list_delete): Ditto.
5747         (address_list_release): Ditto.
5748         (pretty_print_address): Ditto.
5749
5750 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5751
5752         * recur.c (retrieve_tree): In case of followed redirection,
5753         blacklist the pre-redirection URL.
5754
5755 2001-11-26  Hrvoje Niksic  <hniksic@arsdigita.com>
5756
5757         * recur.c (descend_redirect_p): New function.
5758         (retrieve_tree): Make sure redirections are not blindly followed.
5759
5760 2001-11-04  Alan Eldridge  <alane@geeksrus.net>
5761
5762         * config.h.in: added HAVE_RANDOM.
5763
5764         * options.h: added random_wait to struct options.
5765
5766         * main.c (print_help [HAVE_RANDOM], main): added arg parsing, help
5767         for --random-wait.
5768
5769         * retr.c (sleep_between_retrievals) [HAVE_RANDOM]: added
5770         implementation of random wait times.
5771
5772         * init.c (commands): added "randomwait" keyword.
5773
5774 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5775
5776         * recur.c (descend_url_p): Be more conservative with blacklisting
5777         URLs.
5778         (convert_all_links): Print how many files have been converted, and
5779         how long it took.
5780
5781         * progress.c (create_image): Place the number of downloaded bytes
5782         right after the progress bar.
5783
5784         * utils.c (suffix): Return a pointer into the string.
5785
5786 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5787
5788         * url.c (convert_links): Handle CO_NULLIFY_BASE.
5789
5790         * recur.c (retrieve_tree): Ignore download-ignorable children.
5791         (convert_all_links): Specify CO_NULLIFY_BASE when link_base_p.
5792
5793         * html-url.c (handle_link): Return the newly created urlpos.
5794         (collect_tags_mapper): When dealing with BASE, store the base
5795         reference and mark it as download-ignorable.
5796
5797 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5798
5799         * url.c (convert_links): Attempt to quote '?' as "%3F" when
5800         linking to local files.  Given up on the attempt, as it breaks
5801         local browsing.
5802
5803 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5804
5805         * main.c (private_initialize): Removed.
5806         (main): Don't call private_initialize.
5807
5808         * http.c: Call lookup_host.
5809
5810         * host.c (host_init): Removed.
5811         (add_host_to_cache): Initialize host_name_address_map here, on
5812         demand.
5813         (ngethostbyname): Commented out.
5814
5815         * connect.c (make_connection): Remove dead code; use lookup_host.
5816
5817         * host.c (store_hostaddress): Renamed to lookup_host and reversed
5818         the args.
5819         Removed host_address_name_map and host_slave_master_map.
5820
5821 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5822
5823         * progress.c (dot_create): Align the "[ skipping ... ]" string
5824         with the dots.
5825
5826         * retr.c (rate): Split into two functions: calc_rate and
5827         retr_rate.
5828
5829         * progress.c (create_image): Draw a dummy progress bar even when
5830         total size is unknown.
5831         (display_image): Place the text cursor at the end of the "image".
5832
5833 2001-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
5834
5835         * url.c (reencode_string): Use unsigned char, not char --
5836         otherwise the hex digits come out wrong for 8-bit chars such as
5837         nbsp.
5838         (lowercase_str): New function.
5839         (url_parse): Canonicalize u->url if needed.
5840         (get_urls_file): Parse each URL, and return only the valid ones.
5841         (free_urlpos): Call url_free.
5842         (mkstruct): Add :port if the port is non-standard.
5843         (mkstruct): Append the query string to the file name, if any.
5844         (urlpath_length): Use strpbrk_or_eos.
5845         (uri_merge_1): Handle the cases where LINK is an empty string,
5846         where LINK consists only of query, and where LINK consists only of
5847         fragment.
5848         (convert_links): Count and report both kinds of conversion.
5849         (downloaded_file): Use a hash table, not a list.
5850         (downloaded_files_free): Free the hash table.
5851
5852         * retr.c (retrieve_from_file): Ditto.
5853
5854         * main.c (main): Call either retrieve_url or retrieve_tree
5855         for each URL, not both.
5856
5857         * retr.c (register_all_redirections): New function.
5858         (register_redirections_mapper): Ditto.
5859         (retrieve_url): Register the redirections.
5860         (retrieve_url): Make the string "Error parsing proxy ..." 
5861         translatable.
5862
5863         * res.c (add_path): Strip leading slash from robots.txt paths so
5864         that the path representations are "compatible".
5865         (free_specs): Free each individual path, too.
5866         (res_cleanup): New function.
5867         (cleanup_hash_table_mapper): Ditto.
5868
5869         * recur.c (url_queue_new): New function.
5870         (url_queue_delete): Ditto.
5871         (url_enqueue): Ditto.
5872         (url_dequeue): Ditto.
5873         (retrieve_tree): New function, replacement for recursive_retrieve.
5874         (descend_url_p): New function.
5875         (register_redirection): New function.
5876
5877         * progress.c (create_image): Cosmetic changes.
5878
5879         * init.c (cleanup): Do all those complex cleanups only if
5880         DEBUG_MALLOC is defined.
5881
5882         * main.c: Removed --simple-check and the corresponding
5883         simple_host_check in init.c.
5884
5885         * html-url.c (handle_link): Parse the URL here, and propagate the
5886         parsed URL to the caller, who would otherwise have to parse it
5887         again.
5888
5889         * host.c (xstrdup_lower): Moved to utils.c.
5890         (realhost): Removed.
5891         (same_host): Ditto.
5892
5893 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5894
5895         * utils.c (path_simplify): Preserver the (non-)existence of
5896         leading slash.  Return non-zero if changes were made.
5897
5898 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5899
5900         * progress.c (bar_update): Don't modify bp->total_length if it is
5901         zero.
5902
5903 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5904
5905         * retr.c (retrieve_url): When the redirection URL doesn't parse,
5906         print the correct error message rather than "UNKNOWN".
5907
5908 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5909
5910         * progress.c (bar_finish): If the timer didn't record any time
5911         since the download beginning, fake 1ms.
5912
5913 2001-11-24  Hrvoje Niksic  <hniksic@arsdigita.com>
5914
5915         * recur.c (recursive_retrieve): Fix typo.
5916
5917 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5918
5919         * progress.c (create_image): Don't translate "%ld ".
5920
5921 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5922
5923         * progress.c (bar_set_params): Allow the user to force the use of
5924         the bar.
5925
5926 2001-11-23  Lemble Gregory  <gregory.lemble@st.com>
5927
5928         * gen_sslfunc.c (ssl_init_prng): New function; seed the SSL RNG.
5929
5930 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5931
5932         * progress.c: Renamed dp_* functions to dot_* for greater clarity
5933         and consistency with bar_*.
5934         (print_download_speed): Get rid of the unneeded '@' character.
5935         (create_image): Fix download rate geometry.
5936
5937         * progress.c (print_elapsed): Remove spurious space.
5938         (print_elapsed): Renamed to print_download_speed, since that's
5939         what it does.
5940
5941 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5942
5943         * progress.c (bar_update): If the downloaded amount becomes larger
5944         than the expected amount, adjust the expected amount accordingly.
5945
5946 2001-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
5947
5948         * utils.c (determine_screen_width): New function.
5949
5950         * main.c (main): New option `--progress=TYPE'.
5951         (main): Implement compatibility with the old option `--dot-style'.
5952
5953         * init.c: Removed cmd_spec_dotstyle -- that logic is now in
5954         dp_set_params.
5955         (cmd_spec_progress): New function.
5956
5957         * retr.c (get_contents): Use the progress_* functions instead of
5958         the old show_progress().
5959         (show_progress): Removed.
5960         (rate): Print "xxxx.xx K/s" instead of "KB/s".  Ditto for MB/s,
5961         etc.
5962
5963         * progress.c (set_progress_implementation): New function.
5964         (valid_progress_implementation_p): Ditto.
5965         (progress_create): Ditto.
5966         (progress_update): Ditto.
5967         (progress_finish): Ditto.
5968         (dp_create): Ditto.
5969         (dp_update): Ditto.
5970         (dp_finish): Ditto.
5971         (dp_set_params): Ditto.
5972         (print_elapsed): Ditto.
5973
5974 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
5975
5976         * retr.c (show_progress): Use it.
5977
5978         * log.c (log_set_flush): New function.
5979
5980 2001-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
5981
5982         * utils.c (path_simplify): Don't remove trailing slashes.
5983
5984         * ftp.c (ftp_get_listing): Use it.
5985
5986         * utils.c (file_merge): New function.
5987
5988         * url.c (opt_url): Removed.
5989
5990         * recur.c (recursive_retrieve): Inline "opt_url" logic.
5991
5992         * main.c (main): Use xfree(), not free().
5993
5994         * url.c (rewrite_url_maybe): Renamed to rewrite_shorthand_url.
5995
5996         * ftp.c (ccon): Move `ccon' typedef here, since it's only used
5997         internally.
5998
5999         * config.h.in: Include a stub for HAVE_STRPBRK.
6000
6001         * cmpt.c (strpbrk): Include a replacement for systems without
6002         strpbrk().
6003
6004         * ftp.c: Use url_set_dir and url_set_file when modifying the URL.
6005
6006         * url.c (url_set_dir): New function.
6007         (url_set_file): Ditto.
6008
6009         * ftp-basic.c (ftp_process_type): Process FTP type here; the URL
6010         parser makes the URL "params" available, so we can do that in this
6011         function.
6012
6013         * retr.c: Ditto.
6014
6015         * ftp.c: Ditto; pass the local file information in `ccon'.
6016
6017         * http.c: Get rid of the ugly kludge that had URL being replaced
6018         with the proxy URL when proxy retrieval was requested.  Use a
6019         separate parameter to http_loop and gethttp for the proxy URL.
6020
6021         * http.c: Changed to reflect the fact that local file, proxy, and
6022         referer information are no longer stored in struct url.  The local
6023         file information is passed in `struct hstat' now.
6024
6025         * url.c: Reworked URL parsing to be more regular.  Reencode the
6026         URL using reencode_string.
6027         Removed non-URL-related information from struct url.  This
6028         includes fields `proxy', `local', and `referer'.
6029
6030 2001-11-22  Jochen Hein  <jochen@jochen.org>
6031
6032         * main.c (main): Split the copyright notice for easier
6033         translation.
6034
6035 2001-08-21  Dave Turner <dct25@hermes.cam.ac.uk>
6036
6037         * ftp-basic.c (ftp_size): New function to send non-standard SIZE
6038           command to server to request file size.
6039         * ftp.h (ftp_size): Export it.
6040         * ftp.c (getftp): Use new ftp_size function if restoring
6041           transfer of a file with unknown size.
6042
6043 2001-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
6044
6045         * url.c (parseurl): Don't depend on the now-obsolete TYPE.
6046
6047 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6048
6049         * url.c (getproxy): Handle URL shorthands.
6050
6051 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6052
6053         * main.c: Remove --wait / --waitretry backwards compatibility
6054         code.
6055         
6056 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6057
6058         * main.c (main): Use it.
6059
6060         * url.c (rewrite_url_maybe): New function.
6061
6062 2001-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
6063
6064         * url.c: Clean up handling of URL schemes.
6065
6066 2001-05-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6067
6068         * url.c: Get rid of `protostrings'.
6069         (skip_proto): Don't use protostrings.
6070         (has_proto): Ditto.
6071
6072 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6073
6074         * Makefile.in: Conditionally compile getopt.o.
6075
6076 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6077
6078         * md5.h: Renamed to gnu-md5.h.
6079
6080         * md5.c: Renamed to gnu-md5.c.
6081
6082         * http.c: Ditto.
6083
6084         * ftp-opie.c: Use the new macros.
6085
6086         * sysdep.h: Define md5-related macros.
6087
6088         * config.h.in: Define HAVE_SOLARIS_MD5 or HAVE_BUILTIN_MD5
6089         depending on which md5 implementation is used.
6090
6091 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6092
6093         * res.c (res_register_specs): Initialize OLD and HP_OLD to appease
6094         the compiler.
6095
6096 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6097
6098         * http.c (gethttp): Print the whole response line when printing
6099         headers is requested.
6100
6101 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6102
6103         * res.c: New file.  Implement all RES-related code here.
6104
6105 2001-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6106
6107         * version.c: Wget 1.7.1 is released.
6108
6109 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
6110
6111         * headers.c (header_extract_number): Ignore trailing whitespace.
6112
6113 2001-08-24  Ian Abbott  <abbotti@mev.co.uk>
6114
6115         * html-url.c (collect_tags_mapper): Fix bug converting links
6116         with -k option for tags with multiple link attributes by
6117         handling links in the order they appear.
6118
6119 2001-08-15  Ian Abbott  <abbotti@mev.co.uk>
6120
6121         * ftp.c (ftp_loop_internal): Avoid a potential buffer overflow in
6122           the call to the 'rate' function by moving it past the error
6123           checking for the 'getftp' function return value.
6124
6125 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
6126
6127         * html-parse.c (advance_declaration): Use 0x22 instead of '"' or
6128         '\"'.  Different compilers' assert macros are broken in different
6129         ways.
6130
6131 2001-09-29  Christian Fraenkel  <c.fraenkel@gmx.net>
6132
6133         * http.c (gethttp): print debug output for errors occuring during
6134         the ssl handshake.
6135
6136 2001-11-16  Chris Seawood  <cls@seawood.org>
6137
6138         * init.c: Ditto.
6139
6140         * host.c: Ditto.
6141
6142         * connect.c: Ditto.
6143
6144         * sysdep.h: Support compilation under BEOS.
6145
6146 2001-06-08  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
6147
6148         * url.c (url_equal): Fix a memory leak when parseurl returns an
6149         error on the second URL. Also, since url_equal is not used at the
6150         moment, do not compile it.
6151
6152         * url.h: Ditto for the prototype of url_equal.
6153
6154 2001-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
6155
6156         * html-parse.c (map_html_tags): Support XML-style empty tags.
6157
6158 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6159
6160         * wget.h (DO_REALLOC_FROM_ALLOCA): Check for do_realloc_newsize in
6161         loop condition because we're no longer setting SIZEVAR here.
6162
6163 2001-06-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6164
6165         * wget.h (DO_REALLOC_FROM_ALLOCA): Set SIZEVAR after the memcpy()
6166         call because it needs the old value.
6167
6168 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6169
6170         * cookies.c (ATTR_NAME_CHAR): Allow almost any character to be in
6171         an attribute name.
6172
6173 2001-06-18  Hrvoje Niksic  <hniksic@arsdigita.com>
6174
6175         * url.c (url_filename): Make sure that slashes that sneak in to
6176         u->file via query string get protected.
6177         (file_name_protect_query_string): New function.
6178
6179 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6180
6181         * recur.c (recursive_retrieve): Also check undesirable_urls with
6182         canonicalized URL.
6183
6184 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6185
6186         * http.c (gethttp): Search `.netrc' with real host, not the proxy
6187         one.
6188
6189 2001-06-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6190
6191         * sysdep.h (MAP_FAILED): Provide MAP_FAILED for systems that don't
6192         define it.
6193
6194 2001-06-09  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6195
6196         * ftp.h: Provide correct prototype for ftp_parse_ls().
6197
6198 2001-06-04  Hrvoje Niksic  <hniksic@arsdigita.com>
6199
6200         * version.c: Wget 1.7 is released.
6201
6202 2001-06-03  Karl Eichwalder  <ke@suse.de>
6203
6204         * ftp-ls.c (ftp_parse_ls): Fix typo.
6205
6206 2001-05-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6207
6208         * all: Update copyright information.
6209
6210 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6211
6212         * http.c (gethttp): Indicate that the continued download failed
6213         for *this* file.
6214
6215 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6216
6217         * version.c: Wget 1.7-pre1 is released.
6218
6219 2001-05-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6220
6221         * version.c: Updated version to 1.7-pre1.
6222
6223 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6224
6225         * gen_sslfunc.c: Don't include <sys/time.h> directly.
6226
6227 2001-05-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6228
6229         * http.c (gethttp): Use real URL data for cookies, not the proxy
6230         stuff.
6231
6232 2001-05-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6233
6234         * main.c (print_help): Document `--no-http-keep-alive'.
6235
6236         * utils.c (numdigit): Handle negative numbers *correctly*.
6237
6238         * hash.c (make_nocase_string_hash_table): Use term "nocase" rather
6239         than the confusing "unsigned".
6240
6241         * utils.c (string_set_contains): Renamed from string_set_exists.
6242
6243         * hash.c (hash_table_contains): Renamed from hash_table_exists.
6244
6245         * cookies.c: Move case-insensitive hash tables to hash.c.
6246
6247 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6248
6249         * http.c (gethttp): Before concluding that the file is already
6250         fully retrieved, make sure that the file existed and `Range' was
6251         actually requested.
6252
6253 2001-05-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6254
6255         * cookies.c (eliminate_dups): New function.
6256         (build_cookies_request): Use it.
6257         (build_cookies_request): Set chain_store_size after reallocating
6258         all_chains.
6259         (check_domain_match): Annotated for easier future debugging.
6260         (store_cookie): In the debug message, print whether the cookie is
6261         permanent.
6262
6263 2001-05-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6264
6265         * http.c (http_loop): Reset no_truncate before deciding whether to
6266         set it.
6267         (gethttp): Further clarify "-c conflicts with existing file" error
6268         message, based on input from Herold Heiko.
6269
6270 2001-05-07  Hrvoje Niksic  <hniksic@arsdigita.com>
6271
6272         * http.c (http_loop): If restval is set, set no_truncate to 1
6273         unconditionally.
6274
6275 2001-05-02  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6276
6277         * ftp-ls.c (ftp_parse_winnt_ls): Assure months are being correctly
6278         converted. Pointed out by <Stefan.Weil@de.heidelberg.com>.
6279         (ftp_parse_vms_ls): Ditto.
6280
6281 2001-04-30  Hrvoje Niksic  <hniksic@arsdigita.com>
6282
6283         * init.c (cmd_address): Zero SIN before using it; apparently
6284         needed on *BSD.
6285
6286 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6287
6288         * ftp.c (ftp_loop_internal): Don't set NO_TRUNCATE if the file is
6289         empty.
6290
6291 2001-04-29  Hrvoje Niksic  <hniksic@arsdigita.com>
6292
6293         * main.c (main): Make `--cookies' respect its argument.
6294
6295 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
6296
6297         * main.c (main): Removed undocumented option `--email-address'.
6298
6299         * netrc.c: Use the latest read_whole_line.
6300
6301         * init.c (defaults): Set opt.ftp_pass to "-wget@".
6302
6303         * mswindows.c (pwd_cuserid): Ditto.
6304
6305         * utils.c (pwd_cuserid): Removed.
6306
6307         * host.c (ftp_getaddress): Removed.
6308
6309 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
6310
6311         (http_loop): Allocate space for filename_plus_orig_suffix with
6312         alloca; this is more efficient and removes the need to free it
6313         before each and every return.
6314
6315 2001-04-28  Hrvoje Niksic  <hniksic@arsdigita.com>
6316
6317         * http.c (gethttp): Return RETRUNNEEDED when the retrieval is
6318         unneeded because the file is already there and fully downloaded,
6319         and -c is specified.
6320         (http_loop): Handle RETRUNNEEDED.
6321
6322         * wget.h (uerr_t): New value RETRUNNEEDED.
6323
6324         * http.c (http_loop): Set no_truncate for files that both exist
6325         and are non-empty.
6326         (gethttp): Consider the download finished when restval >= contlen,
6327         not only when restval==contlen.
6328         (gethttp): Handle redirection before giving up due to -c.
6329         (gethttp): Clarify error message which explains that -c will not
6330         truncate the file.
6331         (gethttp): When returning CONTNOTSUPPORTED, don't forget to free
6332         the stuff that needs freeing and release the socket.
6333
6334 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6335
6336         * main.c (print_help): Wget booleans accept "off", not "no".
6337
6338 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6339
6340         * http.c (http_loop): If allow_cache is zero, always disable
6341         caching, not only when retrieving through proxy.
6342
6343         * init.c: Ditto.
6344
6345         * options.h (struct options): Rename proxy_cache to allow_cache.
6346
6347 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6348
6349         * http.c (mktime_from_utc): Improve documentation.
6350         (http_atotm): Put format strings into a separate array.
6351
6352 2001-04-27  Hrvoje Niksic  <hniksic@arsdigita.com>
6353
6354         * safe-ctype.h: Instead of throwing #error when isalpha is
6355         defined, redefine it to something that will throw a compile-time
6356         error if actually *used*.  Do the same for the rest of the
6357         standard C macros.
6358
6359 2001-04-26  Hrvoje Niksic  <hniksic@arsdigita.com>
6360
6361         * url.c (getproxy): Ignore empty proxy vars.
6362
6363 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
6364
6365         * http.c (http_loop): Would load cookies every time.
6366
6367         * cookies.c (load_cookies): Handle cookies whose values contain
6368         embedded spaces.
6369
6370 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
6371
6372         * utils.c: Define each DIGITS_* in one line.
6373
6374 2001-04-25  Roger L. Beeman  <beeman@cisco.com>
6375
6376         * http.c (http_atotm): Initialize t.tm_isdst to 0.
6377         (mktime_from_utc): Prevent mktime() from having discontinuities at
6378         DST transition points.
6379
6380 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
6381
6382         * html-url.c (get_urls_html): Fix documentation.
6383
6384 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
6385
6386         * url.c (UNSAFE_CHAR): Reimplement using a static table.
6387         (url_init): Removed.
6388         (init_unsafe_char_table): Removed.
6389
6390 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
6391
6392         * snprintf.c (dopr): Replace ISDIGIT with '0' <= ch && ch <= '9'.
6393
6394 2001-04-25  Hrvoje Niksic  <hniksic@arsdigita.com>
6395
6396         * utils.c: Document timer functions.
6397
6398         * retr.c (rate): Use it.
6399         (rate): Print in GB/s if transfer rate exceeds 1 GB/s.
6400
6401         * utils.c (wtimer_granularity): New function.
6402
6403 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
6404
6405         * retr.c (show_progress): Ditto.
6406
6407         * ftp.c (getftp): Ditto.
6408
6409         * http.c (gethttp): Use new timer functions.
6410
6411         * utils.c (wtimer_allocate): New function.
6412         (wtimer_new): Ditto.
6413         (wtimer_delete): Ditto.
6414         (wtimer_reset): Ditto.
6415         (wtimer_elapsed): Ditto.
6416
6417 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
6418
6419         * utils.c (long_to_string): New, faster version.  Favors smaller
6420         numbers; much of the calculation is now done at compile-time.
6421
6422 2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
6423
6424         * utils.c (numdigit): Handle negative numbers.
6425
6426 2001-04-23  Hrvoje Niksic  <hniksic@arsdigita.com>
6427
6428         * retr.c (show_progress): Print the download rate even when the
6429         percentages are not available.
6430
6431 2001-04-21  Hrvoje Niksic  <hniksic@arsdigita.com>
6432
6433         * ftp.c (getftp): Adjust expected_bytes if the length is
6434         authoritative.
6435
6436 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6437
6438         * url.c: Don't declare `construct'.
6439
6440         * hash.c (grow_hash_table): Speed up rehashing; inline storing of
6441         mappings to new locations.
6442         (hash_table_new): Make resize_threshold a field in the hash table,
6443         so we don't have to recalculate it in each hash_table_put.
6444         (grow_hash_table): Update resize_threshold.
6445         (MAX): Remove unused macro.
6446         (prime_size): Made static.
6447
6448 2001-04-14  Hrvoje Niksic  <hniksic@arsdigita.com>
6449
6450         * retr.c (retrieve_url): Call uri_merge, not url_concat.
6451
6452         * html-url.c (collect_tags_mapper): Call uri_merge, not
6453         url_concat.
6454
6455         * url.c (mkstruct): Use encode_string instead of xstrdup followed
6456         by URL_CLEANSE.
6457         (path_simplify_with_kludge): Deleted.
6458         (contains_unsafe): Deleted.
6459         (construct): Renamed to uri_merge_1.
6460         (url_concat): Renamed to uri_merge.
6461
6462 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6463
6464         * url.c (str_url): Use encode_string instead of the unnecessary
6465         CLEANDUP.
6466         (encode_string_maybe): New function, returns input string if no
6467         encoding is needed.
6468         (encode_string): Call encode_string_maybe to do the dirty work,
6469         xstrdup if no work needed.
6470
6471 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6472
6473         * wget.h (XDIGIT_TO_xchar): Define here.
6474
6475         * url.c (decode_string): Use new name.
6476         (encode_string): Ditto.
6477
6478         * http.c (XDIGIT_TO_xchar): Rename HEXD2asc to XDIGIT_TO_xchar.
6479         (dump_hash): Use new name.
6480
6481         * wget.h: Rename ASC2HEXD and HEXD2ASC to XCHAR_TO_XDIGIT and
6482         XDIGIT_TO_XCHAR respectively.
6483
6484 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6485
6486         * init.c: Include cookies.h.
6487
6488         * cookies.h: Declare cookies_cleanup.
6489
6490         * cookies.c (check_domain_match): Remove unused variable.
6491         (save_cookies): Remove extraneous argument from debug statement.
6492
6493         * host.c (same_host): Don't call skip_url.
6494
6495         * url.c (skip_url): Removed.  Removed its calls from various
6496         functions in url.c.
6497
6498 2001-04-13  Hrvoje Niksic  <hniksic@arsdigita.com>
6499
6500         * cookies.c (unsigned_string_hash): Use the new code in
6501         string_hash as reference.
6502
6503         * hash.c (hash_table_map): Allow deletion and change of the
6504         element processed by MAPFUN.
6505         (string_hash): Use the function from glib.
6506
6507 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6508
6509         * config.h.in: Include #undef stub.
6510
6511         * hash.c (hash_table_remove): Rewrite to actually clear deleted
6512         entries instead of just marking them as deleted.
6513
6514 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6515
6516         * hash.h: Declare hash_table_get_pair and hash_table_count.
6517
6518 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6519
6520         * cookies.c: Declare http_atotm.
6521
6522 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6523
6524         * ftp-ls.c (ftp_parse_unix_ls): Use octal constants for
6525         permissions.  A compiler that doesn't accept octal constants is
6526         seriously broken and shouldn't be used -- octal constants were
6527         present in K&R C!
6528
6529 2001-01-20  Karl Eichwalder  <ke@suse.de>
6530
6531         * Makefile.in: Provide and use DESTDIR according to the Coding
6532         Standards.
6533
6534 2001-04-12  Hrvoje Niksic  <hniksic@arsdigita.com>
6535
6536         * ftp-ls.c (ftp_parse_vms_ls): Make seconds optional in time
6537         specification.
6538
6539 2001-04-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6540
6541         * url.c (parseurl): Don't strip trailing slash when u->dir is "/"
6542         because that strips the *leading* slash, thus forcing relative
6543         FTP retrieval.
6544
6545 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6546
6547         * ftp.c (getftp): Convert initial FTP directory from VMS to UNIX
6548         notation for VMS servers. 
6549         (ftp_retrieve_dirs): Do not prepend '/' to f->name when
6550         odir is an empty string.
6551
6552 2001-04-10  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6553
6554         * ftp-ls.c (ftp_parse_winnt_ls): Made the fix for AM/PM more
6555         effective. Suggested by Edward J. Sabol.
6556
6557 2001-04-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6558
6559         * cookies.c (build_cookies_request): Use and sort cookies from all
6560         matching domains.
6561         (build_cookies_request): Check for duplicates before generating
6562         the `Cookies' header.
6563
6564         * main.c (main): Don't load cookies here.
6565         (main): Make loadcookies and savecookies call the correct command.
6566
6567         * http.c (http_loop): Load cookies on-demand.
6568
6569 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6570
6571         * http.c (gethttp): Fix indentation of SSL ifdef.
6572
6573 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6574
6575         * ftp.c (ftp_retrieve_dirs): Don't forcibly prepend "/" to u->dir;
6576         that hack is no longer necessary.
6577         (getftp): Prepend initial directory to *non*-absolute u->dir's.
6578
6579 2001-04-09  Hrvoje Niksic  <hniksic@arsdigita.com>
6580
6581         * init.c (cmd_file): New function.
6582         (enable_tilde_expansion): New variable.
6583         (run_wgetrc): Use it.
6584         (cmd_file): Use it.
6585
6586 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6587
6588         * init.c: Include cookie-related options.
6589
6590         * main.c (main): Include cookie-specific options.
6591         (main): Load cookies before download is finished.
6592         (main): Save cookies when done.
6593
6594         * http.c (gethttp): Process the `Set-Cookie' header.
6595         (gethttp): Include cookies in the response.
6596
6597         * cookies.c: New file.
6598
6599 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6600
6601         * utils.c (datetime_str): New function.
6602
6603 2001-04-08  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6604
6605         * ftp-ls.c (ftp_parse_winnt_ls): The AM/PM change did assume
6606         12:01PM == 00:01, which was obviously wrong. Taken care of this
6607         anomaly.
6608
6609         * ChangeLog: Removed an excess conflict marker. Reformatted the
6610         entry by Philipp Thomas from 2001-03-09.
6611
6612         * ftp-ls.c (ftp_parse_winnt_ls): Ensure that adjusted PM hours lay
6613         between 0 and 23. Elminate unused variable `sec'.
6614
6615 2001-04-08  Hrvoje Niksic  <hniksic@arsdigita.com>
6616
6617         * hash.c (hash_table_count): New function.
6618
6619 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6620
6621         * utils.c (read_file): Cast MAP_FAILED to char *.  Enforced by
6622         Digital Unix cc.
6623
6624 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6625
6626         * config.h.in: Oops, do the namespace tweaks only on systems we
6627         know about.
6628
6629 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6630
6631         * hash.c: Include <string.h>.
6632
6633 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6634
6635         * config.h.in: Define "compilation environment" options that work
6636         under Linux and Solaris.  To be reviewed on other OS'es.
6637
6638 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6639
6640         * http.c (gethttp): Prepend literal newline with `\n\'.
6641
6642 2001-04-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6643
6644         * sysdep.h: Don't define VERY_LONG_FORMAT.
6645
6646         * utils.c (very_long_to_string): New function.
6647         (legible_very_long): Use it; don't use VERY_LONG_FORMAT.
6648
6649 2001-04-04  Christian Fraenkel  <christian.fraenkel@gmx.net>
6650
6651         * url.c (parse_uname): Would run past the end of the string if the
6652         username was present, but the URL did not contain a slash, e.g.
6653         http://foo:bar@myhost.
6654
6655 2001-04-03  KOJIMA Hajime  <kjm@rins.ryukoku.ac.jp>
6656
6657         * http.c (http_atotm): Use %A instead of %a to match full
6658         weekday.  (On most systems there is no difference.)
6659
6660 2001-04-03  Paul Bludov  <paul@ozero.net>
6661
6662         * mswindows.c (sleep): Use SleepEx() instead of Sleep().
6663         (ws_changetitle): Use alloca() instead of malloc() to avoid memory
6664         leak.
6665         (ws_mypath): Use GetModuleFileName instead of argv[0].
6666         (ws_startup): Use data.wVersion for comparison.
6667
6668 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6669
6670         * http.c (http_loop): Ditto.
6671
6672         * ftp.c (ftp_loop_internal): Made the check whether to continue
6673         retrieval `-O'-friendly.
6674
6675 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6676
6677         * netrc.c (parse_netrc): Don't trim the line endings explicitly;
6678         they will be handled as whitespace.
6679         (parse_netrc): Correctly handle lines that end with whitespace.
6680
6681 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6682
6683         * retr.c (retrieve_url): New variable global_download_count used
6684         to identify first retrieval.
6685
6686         * ftp.c (getftp): Ditto.
6687
6688         * http.c (gethttp): Rewind opt.dfp only on first retrieval.
6689
6690 2001-04-02  Hrvoje Niksic  <hniksic@arsdigita.com>
6691
6692         * init.c (cmd_address): Heap-allocate the address that gets stored
6693         to CLOSURE.  Old code would simply assign an address on the stack.
6694
6695 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
6696
6697         * ftp.c (ftp_get_listing): Propagate error status.
6698         (ftp_retrieve_glob): Use it.
6699         (ftp_loop): Ditto.
6700
6701 2001-04-01  Nicolas Lichtmaier <nick@debian.org>
6702
6703         * main.c (main): Add -C to the string that is the third arg to
6704         getopt_long().
6705
6706 2001-04-01  Hrvoje Niksic  <hniksic@arsdigita.com>
6707
6708         * ftp.c (getftp): Don't start the download from scratch if `-c'
6709         was specified, but the file is already fully downloaded.
6710
6711         * http.c (gethttp): Don't truncate a pre-existing file if `-c' was
6712         specified and the server doesn't support continued download.
6713         (gethttp): Don't start the download from scratch if `-c' was
6714         specified, but the file is already fully downloaded.
6715
6716 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
6717
6718         (recursive_retrieve): Don't clear the hash tables at this point at
6719         all; it interferes with the normal operation of register_download.
6720
6721 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
6722
6723         * recur.c (recursive_retrieve): Clear the hash tables only when
6724         they are defined.
6725
6726 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
6727
6728         * http.c (gethttp): Make sure the socket is closed with
6729         CLOSE_INVALIDATE before we have drained the body.
6730
6731 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
6732
6733         * retr.c (retrieve_url): Call register_download() for downloaded
6734         files and register_html() for downloaded HTML files.
6735
6736         * recur.c (register_download): New function; register here that a
6737         file has been downloaded, rather than in recursive_retrieve().
6738         (register_html): New function; enqueue the location of HTML files
6739         here rather than in recursive_retrieve().
6740
6741 2001-03-31  Hrvoje Niksic  <hniksic@arsdigita.com>
6742
6743         * main.c (print_help): Use multiple fputs instead of a single ugly
6744         printf().
6745         (main): Consistently assign numbers >128 to options without a
6746         corresponding character.
6747
6748 2001-03-09  Philipp Thomas  <pthomas@suse.de>
6749
6750         * safe-ctype.h: New file. Locale independent ctype.h replacement
6751         taken from libiberty.
6752
6753         * safe-ctype.c: New file. Tables for above.
6754
6755         * Makefile.in: Add safe-ctype$o to OBJS.  Add dependencies for
6756         safe-ctype$o.
6757
6758         * cmpt.c: Remove include of ctype.h. Use ISSPACE instead of
6759         isspace.
6760
6761         * ftp-basic.c: Don't include ctype.h.
6762
6763         * ftp-ls.c: Likewise.
6764
6765         * ftp.c: Likewise.
6766
6767         * headers.c: Likewise.
6768
6769         * host.c: Likewise.
6770
6771         * html-parse.c: Likewise.
6772
6773         * html-url.c: Likewise.
6774
6775         * http.c: Likewise.
6776
6777         * init.c: Likewise.
6778
6779         * main.c: Likewise. Set LC_CTYPE along with LC_MESSAGES.
6780
6781         * netrc.c: Likewise.
6782
6783         * recur.c: Likewise.
6784
6785         * retr.c: Likewise.
6786
6787         * snprintf.c: Replace ctype.h with safe-ctype.h. Use ISDIGIT
6788         instead of isdigit.
6789
6790         * sysdep.h: Remove defines of ctype macros as they aren't needed
6791         for safe-ctype-h.
6792
6793         * url.c: Don't include ctype.h.
6794
6795         * utils.c: Likewise.
6796
6797         * wget.h: Include safe-ctype.h.
6798
6799 2001-03-27  Dan Harkless  <wget@harkless.org>
6800
6801         * Makefile.in: Moved top_builddir out of "User configuration
6802         section" of top Makefile and analogous spot in this one.
6803
6804 2001-03-17  Dan Harkless  <wget@harkless.org>
6805
6806         * Makefile.in: Include @SSL_INCLUDES@ substition in INCLUDES.
6807         Define top_builddir.  Link wget with libtool so the user doesn't
6808         have to supply a bunch of custom environment variables to 
6809         correctly link with the OpenSSL shared libraries.
6810
6811 2001-03-06  Hack Kampbjorn  <hack@hackdata.com>
6812
6813         * http.c (gethttp): skip :port in host header if it is the
6814         DEFAULT_HTTPS_PORT when using SSL.
6815
6816         * url.c: move the #define of DEFAULT_HTTP_PORT, DEFAULT_FTP_PORT
6817         and DEFAULT_HTTPS_PORT to the header file so it can be use in the
6818         rest of the code. 
6819         * url.h: Ditto
6820
6821 2001-03-01  Jonas Jensen  <bones@huleboer.dk>
6822
6823         * retr.c (show_progress): Correctly calculate the number of bytes
6824         in the first line of the download that have been actually
6825         downloaded in this run.
6826
6827 2001-02-23  Dan Harkless  <wget@harkless.org>
6828
6829         * main.c (print_help): --help documentation for -N said it would
6830         re-download files if they had the _same_ timestamp on server.
6831         (print_help): -nr belongs in "FTP options" section of --help
6832         output, not "Recursive retrieval" section.  Alphabetized FTP
6833         options by long option name.
6834
6835 2001-02-16  Dan Harkless  <wget@harkless.org>
6836
6837         * init.c (commands): Hack Kampbjørn <hack@hackdata.com> discovered
6838         that "httpsproxy" had been inserted into commands[] out of
6839         alphabetical order, causing "BUG: unknown command `httpuser'".
6840
6841 2001-02-13  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6842
6843         * ftp-ls.c (ftp_parse_ls): Added support of ST_MACOS (Unix-like
6844         listing without correct permissons).
6845
6846         * ftp.h (stype): Added ST_MACOS to identify the NetPresenz MacOS
6847         FTP server. 
6848
6849         * ftp.c (ftp_retrieve_list): New mirroring logic: A remote file
6850         shall be donwloaded only when it's newer than the local copy or
6851         when it has the same timeestamp but its size is different. ST_VMS
6852         and ST_MACOS as special cases that lie about file size. 
6853
6854         * ftp-ls.c (ftp_parse_ls): Support for ST_MACOS.
6855
6856         * Makefile.in: Removed dependency on ftpparse library due to unclear
6857         copyright issues and absence of any feedback to our queries. 
6858
6859         * ftp-ls.c: Removed dependency on ftpparse library due to unclear
6860         copyright issues and absence of any feedback to our queries.   
6861         (ftp_parse_ls): Added a warning message when remote server system
6862         does not seem to be suported by wget. 
6863         (ftp_parse_vms_ls): New function for parsing VMS ftp
6864         server listing output.
6865         (clean_line): New function responsible for removing
6866         end-of-line characters from FTP listing texts.
6867
6868         * ftp.c (getftp): Global variables pwd and host_type are now
6869         member of the ccon structure under names ccon.id and ccon.rs. 
6870
6871         * ftp.h (struct ccon): Added formed global variables from ftp.c,
6872         enum stype rs (remote system identification) and char *id (initial
6873         working directory), as suggested by Hrvoje.
6874
6875         * url.c (parse_uname): Added support for passwords containing '@'
6876         characters.
6877         (skip_uname): Ditto.
6878
6879 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6880
6881         * ftp.c (ftp_loop): Reset con.
6882
6883 2001-01-06  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
6884
6885         * url.c (parse_uname): Added support for passwords containing '@'
6886         characters.
6887         (skip_uname): Ditto.
6888
6889 2001-02-11  Hack Kampbjørn  <hack@hackdata.com>
6890
6891         * url.c (parseurl): Debug-print u->ftp_type.
6892
6893 2001-02-11  Hrvoje Niksic  <hniksic@arsdigita.com>
6894
6895         * ftp.c (ftp_loop_internal): Disable padding.
6896         (getftp): Ditto.
6897
6898         * http.c (http_loop): Disable padding.
6899
6900         * retr.c (show_progress): Use it to enable padding.
6901
6902         * retr.c (rate): Optional parameter PAD for padding the rate.
6903
6904 2001-02-10  Hrvoje Niksic  <hniksic@arsdigita.com>
6905
6906         * retr.c (show_progress): Make sure that the last output line
6907         includes progress.
6908
6909 2001-02-10  Jonas Jensen  <bones@huleboer.dk>
6910
6911         * retr.c (show_progress): Print the download rate along with the
6912         percentages.
6913         Along with Anders Thorsby <anders@thorsby.dk>.
6914
6915 2001-02-10  Tim Mooney  <mooney@dogbert.cc.ndsu.NoDak.edu>
6916
6917         * ftp.h: Rename enums `command' to `wget_ftp_command' and
6918         `fstatus' to `wget_ftp_status' because old names clash with Tru64
6919         net/if.h.
6920
6921 2001-02-08  Christian Fraenkel <christian.fraenkel@gmx.net>
6922
6923         * gen_sslfunc.c: verify_callback is now static
6924
6925         * gen_sslfunc.c (init_ssl): load certificate if specified
6926
6927         * gen_sslfunc.c (ssl_printerr): new function
6928
6929         * init.c: added new --sslcertfile and --sslcertkey switches
6930
6931         * main.c: ditto
6932
6933         * options.h: ditto
6934
6935         * http.c (gethttp): abort when init_ssl fails
6936
6937 2001-01-23  Herold Heiko  <Heiko.Herold@previnet.it>
6938
6939         * mswindows.h: Include <malloc.h>; it's needed for alloca().
6940
6941 2001-01-10  Dan Harkless  <wget@harkless.org>
6942
6943         * url.c (str_url): Clarified this function's comment header after
6944         Hrvoje answered my question on the list as to when hide != 1.
6945         Also Hrvoje pointed out I need to use xstrdup() on the string literal.
6946
6947 2001-01-06  Hrvoje Niksic  <hniksic@arsdigita.com>
6948
6949         * connect.c (bindport): Declare addrlen as int.  Diagnosed by
6950         Drazen Kacar <dave@arsdigita.com>.
6951         (conaddr): Ditto.
6952
6953 2001-01-09  Dan Harkless  <wget@harkless.org>
6954
6955         * html-url.c: A bunch of fixup of `--page-requisites'-related
6956         comments to reflect Hrvoje's changes to my code when transplanting
6957         it into this new file, to fix spelling mistakes, to clarify, etc.
6958
6959         * url.c (write_backup_file): Clarified a comment.
6960         (str_url): Henrik van Ginhoven pointed out on the list that we
6961         shouldn't give away the number of characters in the password by
6962         replacing each character with a 'x'.  Use "<password>" instead.
6963
6964         * ftp.c (ftp_retrieve_dirs): The bug where recursion into FTP
6965         directories didn't work if logging in put you in a directory other
6966         than "/" is fixed now.  Removed the comment here warning of the bug.
6967
6968         * main.c (print_help): --continue's description was misleading.
6969         We don't "restart", we "resume".  Also, better to say
6970         "partially-downloaded file" rather than just "existing file".
6971
6972 2001-01-06  Dan Harkless  <wget@harkless.org>
6973
6974         * ChangeLog: The '[Not in 1.6 branch.]'s were decided not to be
6975         the best way to go about my aim.  Removed them in favor of:
6976
6977         * ChangeLog-branches/1.6_branch.ChangeLog: New file.
6978
6979 2001-01-04  Hrvoje Niksic  <hniksic@arsdigita.com>
6980
6981         * url.c (replace_attr): New function, to be used by both
6982         TO_COMPLETE and TO_RELATIVE case in convert_links.
6983         (find_fragment): New function for finding URL fragments.
6984         (replace_attr): Better handle the case where the original string
6985         is not quoted.  Use find_fragment.
6986         (convert_links): Use replace_attr().
6987
6988 2000-12-31  Dan Harkless  <wget@harkless.org>
6989
6990         * ChangeLog: Since this flat file doesn't have multiple branches,
6991         looking at the dates would make you think that things went into
6992         1.6 that actually just went into the 1.7-dev branch.  Added "[Not
6993         in 1.6 branch.]" where appropriate to clarify.
6994         
6995 2000-12-30  Dan Harkless  <wget@harkless.org>
6996
6997         * ftp.c, http.c:  Applied Hack Kampbjørn <hack@hackdata.com>'s
6998         patch to deal with h_errno not being defined in netdb.h under Cygwin.
6999
7000 2000-12-18  Csaba Raduly  <csaba.raduly@sophos.com>
7001
7002         * sysdep.h: Include <malloc.h> and <io.h> under Watcom.
7003
7004 2000-12-17  Igor Khristophorov  <igor@atdot.org>
7005
7006         * http.c (check_end): Fix test for '+' or '-'.
7007
7008 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
7009
7010         * url.c (parseurl): Rename inner loop var from i to ind to avoid
7011         clash with the function top-level-declared variable i.
7012         (str_url): Likewise, rename inner-loop i to j.
7013
7014         * recur.c (parse_robots): Don't declare LEN at top of function.
7015         (robots_match): Renamed parameter FORBIDDEN to avoid hiding of
7016         global variable.
7017
7018         * main.c (main): Change erroneous use of bitwise and to logical.
7019
7020         * init.c (cmd_address): Don't heap-allocate `sin'; it can be on
7021         the stack because it will be copied to closure.
7022
7023         Thanks to Csaba Raduly's run of PC-LINT over the sources.
7024
7025 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
7026
7027         * http.c (basic_authentication_encode): Use xmalloc(), not
7028         malloc().  Thanks to Csaba Raduly's run of PC-LINT over the
7029         sources.
7030
7031 2000-12-17  Csaba Raduly  <csaba.raduly@sophos.com>
7032
7033         * sysdep.h: Test for __EMX__ rather than for EMXOS2 for OS/2
7034         compilation.
7035
7036 2000-12-17  Hrvoje Niksic  <hniksic@arsdigita.com>
7037
7038         * mswindows.c: Include <errno.h>.
7039
7040         * gen_sslfunc.c: Include <errno.h>.
7041
7042         * ftp-basic.c: Don't attempt to declare errno or h_errno because
7043         they're not used.
7044
7045         * main.c: Include <errno.h> because errno is used.
7046
7047         * ftp.c: Ditto.
7048
7049         * http.c: Include <netdb.h> for h_errno.
7050
7051 2000-12-13  Hrvoje Niksic  <hniksic@arsdigita.com>
7052
7053         * html-parse.c (advance_declaration): MSVC assert() chokes on
7054         '\"'.  Use '"' instead.
7055
7056 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
7057
7058         * utils.c (xfree_real): Removed.
7059         (xfree_debug): Just call free().
7060
7061         * wget.h (xfree): Make it an alias for free.
7062
7063 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
7064
7065         * http.c (http_loop): Furthermore, touch output_document only if
7066         it is known to be an existing regular file.
7067
7068 2000-12-11  Hrvoje Niksic  <hniksic@arsdigita.com>
7069
7070         * ftp.c (ftp_retrieve_list): Ditto.
7071
7072         * http.c (http_loop): Touch output_document if that is used for
7073         output.
7074
7075 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7076
7077         * http.c: Include gen_sslfunc.h after including Wget's headers.
7078         (persistent_available_p): Needed coma before `int ssl'.
7079
7080 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7081
7082         * ftp.c (ftp_loop_internal): Ditto.
7083
7084         * http.c (http_loop): Use it.
7085
7086         * retr.c (sleep_between_retrievals): New function that handles the
7087         logic of opt.wait and opt.waitretry.
7088
7089 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7090
7091         * rbuf.h: Implement only a single version of RBUF_READCHAR, using
7092         rbuf_read_bufferful when the buffer is depleted.
7093
7094         * rbuf.c (rbuf_read_bufferful): New function.
7095
7096 2000-12-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7097
7098         * gen_sslfunc.h: Use ansi2knr style function declarations.
7099
7100         * gen_sslfunc.c: Reformat according to the GNU coding standards.
7101         More should be done.
7102
7103         * http.c (persistent_available_p): Place the cheap SSL test nearer
7104         the top of the function.
7105         (CLOSE_FINISH, CLOSE_INVALIDATE): Define only one version of each.
7106
7107 2000-12-05  Hrvoje Niksic  <hniksic@arsdigita.com>
7108
7109         * url.c (init_unsafe_char_table): Reinstate space as an unsafe
7110         char.
7111
7112 2000-12-03  Christian Fraenkel <christian.fraenkel@gmx.net>
7113
7114         * Makefile.in: added gen_sslfunc object
7115         * config.h.in: added HAVE_SSL define
7116         * connect.c: changed select_fd from static int to int
7117         * connect.h: ditto
7118         * gen_sslfunc.h: New file
7119         * gen_sslfunc.c: ditto
7120         * http.c: added HTTPS fuctionality
7121         * retrc.c: ditto
7122         * url.c: ditto
7123         * init.c: added opt.httpsproxy
7124         * options.h: ditto
7125         * rbuf.h: added alternate rbuf struct
7126         * wget.h: added CONSSLERR
7127         * rbuf.c: ditto
7128
7129         * http.c: Added HTTPS fuctionality.
7130
7131         * retrc.c: Ditto.
7132
7133         * url.c: Ditto.
7134
7135         * init.c: Added opt.httpsproxy.
7136
7137         * options.h: Ditto.
7138
7139         * rbuf.h: Added alternate rbuf struct.
7140
7141         * wget.h: Added CONSSLERR.
7142
7143         * rbuf.c: Ditto.
7144
7145 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7146
7147         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
7148         "ignore_perms" to ignore file and directory permissions for
7149         Windows NT FTP server listings.
7150         (ftp_parse_winnt_ls): New function.
7151         (ftp_parse_ls): Parses UNIX and Windows NT listings
7152         separately. Simple heuristics for distinguishing between UNIX and
7153         MS-DOS-like FTP listing provided by Windows NT FTP service.
7154
7155 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7156
7157         * ftpparse.c, ftpparse.h: New files.
7158
7159         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
7160         only. Use ftp_parse_nonunix_ls otherwise.
7161         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
7162         exotic FTP servers.
7163
7164         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
7165         FTP servers.
7166
7167         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
7168         (getftp): Support for VMS. Support for FTP servers that do not
7169         place you in the root directory after login.
7170         (ftp_retrieve_list): VMS is silent about the real file size, issue
7171         a more appropriate message.
7172         (ftp_get_listing): Pass host_type to ftp_parse_ls.
7173
7174         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
7175
7176 2000-11-30  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7177
7178         * ftp-ls.c (ftp_parse_unix_ls): Added second parameter
7179         "ignore_perms" to ignore file and directory permissions for
7180         Windows NT FTP server listings.
7181         (ftp_parse_winnt_ls): New function.
7182         (ftp_parse_ls): Parses UNIX and Windows NT listings
7183         separately. Simple heuristics for distinguishing between UNIX
7184         and MS-DOS-like FTP listing provided by Windows NT FTP service.
7185
7186 2000-11-29  John Summerfield  <summer@OS2.ami.com.au>
7187
7188         * netrc.c (parse_netrc): Get rid of line ending.
7189
7190 2000-11-25  Hrvoje Niksic  <hniksic@arsdigita.com>
7191
7192         * ftp.c (ftp_retrieve_list): Undo typo "fix" until resolution by
7193         Dan.
7194
7195 2000-11-24  Karl Eichwalder  <ke@suse.de>
7196
7197         * main.c (print_help): Untabify.
7198
7199 2000-11-23  Hrvoje Niksic  <hniksic@arsdigita.com>
7200
7201         * utils.c (xrealloc_debug): Do the unregister/register thing only
7202         if the pointer has actually changed.
7203         (xmalloc_real): Declare `static' in DEBUG_MALLOC builds.
7204         (xfree_real): Ditto.
7205         (xrealloc_real): Ditto.
7206         (xstrdup_real): Ditto.
7207
7208 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
7209
7210         * ftp.c (getftp): ftp_getaddress() returns a malloc'ed copy of the
7211         string; no need to strdup() it.
7212         (getftp): Make pwd_len a local variable.
7213         (ftp_loop): Free PWD before returning.
7214
7215         * init.c (cleanup): Free opt.ftp_pass only if it's non-NULL.
7216
7217 2000-11-22  Hrvoje Niksic  <hniksic@arsdigita.com>
7218
7219         * all: Use xfree() instead of free.
7220
7221         * utils.c (xfree): New function.
7222
7223 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
7224
7225         * url.c (convert_links): HTML-quote the converted string.
7226
7227         * utils.c (html_quote_string): Move here from ftp-ls.c
7228         (html_quote_string): Make non-static; declare in utils.h.
7229         (html_quote_string): Convert SP to &#32;.
7230
7231 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
7232
7233         * ftp.c (getftp): Reformat Jan's code according to GNU coding
7234         standards; remove (debugging?) printf's; use '\0' for the ASCII
7235         zero character.  Use alloca() instead of malloc() for
7236         inter-function temporary allocations.
7237
7238 2000-11-18  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7239
7240         * ftpparse.c, ftpparse.h: New files.
7241
7242         * ftp-ls.c (ftp_parse_ls): Use ftp_parse_unix_ls for UNIX servers
7243         only. Use ftp_parse_nonunix_ls otherwise.
7244         (ftp_parse_nonunix_ls): Stub to the ftpparse library handling all
7245         exotic FTP servers.
7246
7247         * ftp.h (stype): New enum, distinguishes UNIX, VMS, and "other"
7248         FTP servers.
7249
7250         * ftp.c: New static wariables host_type, pwd, and pwd_len. 
7251         (getftp): Support for VMS. Support for FTP servers that do not
7252         place you in the root directory after login.
7253         (ftp_retrieve_list): VMS is silent about the real file size, issue
7254         a more appropriate message.
7255         (ftp_get_listing): Pass host_type to ftp_parse_ls.
7256
7257         * ftp-basic.c (ftp_pwd, ftp_syst): New functions.
7258
7259 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
7260
7261         * hash.c (hash_table_put): Don't overwrite deleted mappings.
7262
7263 2000-11-21  Hrvoje Niksic  <hniksic@arsdigita.com>
7264
7265         * hash.c (find_mapping): New function.
7266         (hash_table_get): Use it.
7267         (hash_table_get_pair): Ditto.
7268         (hash_table_exists): Ditto.
7269         (hash_table_remove): Ditto.
7270         (hash_table_remove): Really delete the entry if the mapping
7271         following LOCATION is empty.
7272
7273         * utils.c (string_set_add): Check whether the element has existed
7274         before.
7275
7276         * hash.c (hash_table_get_pair): New function.
7277
7278 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
7279
7280         * http.c (http_process_type): Ignore trailing whitespace; use
7281         strdupdelim().
7282
7283         * recur.c (recursive_retrieve): Use the new `convert' field.
7284         (convert_all_links): Ditto.
7285         (convert_all_links): Don't respect meta_disallow_follow.
7286
7287         * html-url.c (handle_link): Fill out link_relative_p and
7288         link_complete_p.
7289
7290         * url.h (struct _urlpos): Make elements more readable.
7291
7292         * recur.c (recursive_retrieve): Call slist_prepend instead of
7293         slist_append.
7294         (convert_all_links): Call slist_nreverse before iterating through
7295         urls_html.
7296
7297         * utils.c (slist_prepend): New function.
7298         (slist_nreverse): Ditto.
7299
7300 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
7301
7302         * http.c (check_end): Constify.
7303
7304 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
7305
7306         * http.c (http_loop): If username and password are known, try the
7307         `Basic' authentication scheme by default.
7308
7309         * connect.h: Declare test_socket_open.
7310
7311 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
7312
7313         * version.c: Bump version from 1.5.3+dev to 1.7-dev.
7314
7315 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
7316
7317         * http.c (gethttp): Don't use the return value of sprintf().
7318         (gethttp): Inhibit keep-alive if opt.http_keep_alive is 0.
7319
7320 2000-11-20  Hrvoje Niksic  <hniksic@arsdigita.com>
7321
7322         * recur.c (recursive_retrieve): Print the "so we don't load"
7323         debugging message only if we really don't load.
7324
7325         * http.c (gethttp): Inhibit keep-alive if proxy is being used.
7326         (gethttp): Don't request keep-alive if keep-alive is inhibited.
7327
7328 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7329
7330         * http.c (gethttp): Make the HTTP persistent connections more
7331         robust.
7332
7333 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7334
7335         * retr.c (get_contents): If use_expected, make sure that the
7336         appropriate amount of data is being read.
7337
7338         * http.c (gethttp): Check for both `Keep-Alive: ...' and
7339         `Connection: Keep-Alive'.
7340
7341         * wget.h (DEBUGP): Call debug_logprintf only if opt.debug is
7342         turned on.
7343
7344 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7345
7346         * http.c (connection_available_p): Use it.
7347
7348         * connect.c (test_socket_open): New function.
7349
7350         * http.c (gethttp): Support persistent connections.  Based on the
7351         ideas, and partly on code, by Sam Horrocks <sam@daemoninc.com>.
7352         (register_persistent): New function.
7353         (connection_available_p): Ditto.
7354         (invalidate_connection): Ditto.
7355
7356 2000-11-19  Hrvoje Niksic  <hniksic@arsdigita.com>
7357
7358         * url.c (convert_links): Handle UREL2ABS case.
7359
7360         * recur.c (recursive_retrieve): Instead of the list
7361         urls_downloaded, use hash tables dl_file_url_map and
7362         dl_url_file_map.
7363         (convert_all_links): Use them to retrieve data.
7364
7365         * host.c (clean_hosts): Free the hash tables.
7366
7367         * main.c (private_initialize): Call host_init().
7368
7369         * host.c (store_hostaddress): Use a saner, hash table-based data
7370         model.
7371         (realhost): Ditto.
7372         (host_init): Initialize the hash tables.
7373
7374 2000-11-18  Hrvoje Niksic  <hniksic@arsdigita.com>
7375
7376         * utils.c (slist_append): Eviscerate NOSORT.  Hash tables are now
7377         used for what the sorted slists used to be used for.
7378         (slist_contains): Don't rely on the list being sorted.
7379         (slist_append): Simplify the code.
7380
7381         * recur.c (recursive_cleanup): Use free_string_set.
7382
7383         * utils.c (string_set_add, string_set_exists, string_set_free):
7384         New functions for easier freeing of hash tables whose keys are
7385         strdup'ed strings.
7386
7387         * recur.c (recursive_retrieve): Use the hash table functions for
7388         storing undesirable URLs.
7389
7390         * hash.c: New file.
7391
7392 2000-11-17  Hrvoje Niksic  <hniksic@arsdigita.com>
7393
7394         * main.c (private_initialize): Call url_init.
7395         (main): Call private_initialize.
7396
7397         * url.c (unsafe_char_table): New table.
7398         (UNSAFE_CHAR): Use it.
7399         (init_unsafe_char_table): New function.
7400         (url_init): New function; call init_unsafe_char_table.
7401
7402 2000-11-16  Hrvoje Niksic  <hniksic@arsdigita.com>
7403
7404         * mswindows.h: Define snprintf and vsnprintf to _snprintf and
7405         _vsnprintf respectively.
7406
7407 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
7408
7409         * config.h.in: Do the _XOPEN_SOURCE and _SVID_SOURCE things only
7410         on Linux.
7411
7412 2000-11-15  Hrvoje Niksic  <hniksic@arsdigita.com>
7413
7414         * html-url.c (handle_link): Handle HTML fragment identifiers.
7415
7416         * recur.c (recursive_retrieve): If norobot info is respected and
7417         the file is specified not to be followed by robots, respect that.
7418
7419         * html-url.c (collect_tags_mapper): Handle <meta name=robots
7420         content=X>.  For us the important cases are where X is NONE or
7421         where X contains NOFOLLOW.
7422         (get_urls_html): Propagate that information to the caller.
7423
7424 2000-11-13  Hrvoje Niksic  <hniksic@arsdigita.com>
7425
7426         * url.c (convert_links): Unlink the file we might be reading from
7427         before writing to it.
7428         (convert_links): Use alloca instead of malloc for
7429         filename_plus_orig_suffix.
7430
7431 2000-11-12  Hrvoje Niksic  <hniksic@arsdigita.com>
7432
7433         * host.c (realhost): Add HOST to the list with quality==0 only if
7434         it wasn't already there.
7435         Based on analysis by Lu Guohan <feng@public.bjnet.edu.cn>.
7436
7437 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
7438
7439         * url.c (get_urls_file): Ditto.
7440         (convert_links): Ditto.
7441
7442         * html-url.c (get_urls_html): Use read_file() instead of
7443         load_file().
7444
7445         * utils.c (read_file): New function, instead of the old
7446         load_file().
7447         (read_file_free): Ditto.
7448
7449         * url.c (findurl): Search only for the supported protocols.
7450         (convert_links): Use fwrite() when writing out a region of
7451         characters.
7452
7453 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
7454
7455         * ftp-ls.c: Move html_quote_string and ftp_index here.
7456
7457         * url.c: Remove get_urls_html, since that's now in html-url.c.
7458
7459         * html-url.c: New file.
7460
7461         * html-parse.c: New file.
7462
7463 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
7464
7465         * init.c (run_wgetrc): Don't bother killing off '\r' since
7466         pars_line() skips whitespace at end of line anyway.
7467         (parse_line): Oops, it didn't.  Now it does.
7468
7469         * recur.c (parse_robots): Ditto here.
7470
7471         * ftp-ls.c (ftp_parse_unix_ls): Kill off the newline character
7472         manually because read_whole_line no longer does.
7473
7474         * utils.c (read_whole_line): Rewrite to: a) use less memory
7475         (reallocates to needed size after work), b) work faster -->
7476         fgets() instead of getc, c) be more correct --> doesn't kill the
7477         newline character at the end of line.
7478
7479 2000-11-10  Hrvoje Niksic  <hniksic@arsdigita.com>
7480
7481         * init.c (comind): Initialize MAX to array size - 1.
7482
7483 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
7484
7485         * url.c (construct): Changed last_slash[-1] to *(last_slash - 1).
7486         Suggested by Edward J. Sabol.
7487
7488 2000-11-08  Hrvoje Niksic  <hniksic@arsdigita.com>
7489
7490         * url.c (construct): Handle the case where host name is not
7491         followed by a slash.
7492
7493 2000-11-06  Hrvoje Niksic  <hniksic@arsdigita.com>
7494
7495         * init.c: commands[] need to be sorted!  ("base" wasn't.)
7496
7497 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
7498
7499         * wget.h (DO_REALLOC_FROM_ALLOCA): Use braces to disambiguate
7500         `if'.
7501
7502 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
7503
7504         * url.c (construct): Insert unneeded initialization for the
7505         compiler to shut up.
7506
7507         * config.h.in: Define _XOPEN_SOURCE to 500 to get the prototype
7508         for strptime() (*duh*).  Define _SVID_SOURCE to get S_IFLNK which
7509         otherwise gets lost when you define _XOPEN_SOURCE.
7510
7511         * utils.c (touch): Include the file name in the error message.
7512         From Debian.
7513
7514 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
7515
7516         * log.c (logvprintf): Use vsnprintf() in all cases.  If necessary,
7517         resize the buffer to fit the formated message.  That way, messages
7518         of arbitrary size may be printed.
7519         (logvprintf): Use saved_append() to optionally log the last
7520         several lines of output.
7521         (logputs): Ditto.
7522         (log_close): Adapt to new data structures.
7523         (log_dump): Ditto.
7524         (redirect_output): Print messages to stderr, not to stdout.
7525
7526         * log.c (saved_append_1): New function.  Replaces the old logging
7527         system ("log all output until 10M characters") with a new, much
7528         more reasonable one ("log last screenful of text").
7529         (saved_append): New function; call saved_append_1.
7530         (free_log_line): New function.
7531
7532 2000-11-05  Hrvoje Niksic  <hniksic@arsdigita.com>
7533
7534         * url.c (construct): Fix comment.
7535         (find_last_char): Document.
7536
7537 2000-11-04  Hrvoje Niksic  <hniksic@arsdigita.com>
7538
7539         * snprintf.c: New file.
7540
7541 2000-11-03  Hrvoje Niksic  <hniksic@arsdigita.com>
7542
7543         * wget.h: If HAVE_STDARG_H is not defined, don't declare argument
7544         types to logprintf() and debug_logprintf().
7545
7546 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
7547
7548         * ftp.c (ftp_loop_internal): Hide the password from the URL when
7549         printing non-verbose.  Problem spotted by Dariusz Mlynarczyk
7550         <darekm@bydg.lomac.com.pl>.
7551
7552 2000-11-02  Junio Hamano  <junio@twinsun.com>
7553
7554         * ftp-basic.c (ftp_login): Make comparison case-insensitive.
7555
7556 2000-11-02  Tyler Riddle  <triddle@liquidmarket.com>
7557
7558         * http.c (known_authentication_scheme_p): Recognize NTML
7559         authentication.
7560         (create_authorization_line): Treat NTML the same as `Basic'.
7561
7562 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
7563
7564         * retr.c (retrieve_url): Free url before returning.
7565         (retrieve_url): Free mynewloc before returning.
7566         Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
7567
7568 2000-11-02  Hrvoje Niksic  <hniksic@arsdigita.com>
7569
7570         * url.c (parseurl): Remove possible reading past the end of
7571         sup_protos[].  Spotted by Mark A. Mankins <Mankins_Mark@prc.com>.
7572
7573 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7574
7575         * main.c (main): In case of opt.downloaded overflowing, print
7576         <overflow> instead of a totally bogus random value.
7577
7578         * retr.c (retrieve_from_file): Ditto.
7579
7580         * recur.c (recursive_retrieve): Ditto.
7581
7582         * main.c (main): Ditto.
7583
7584         * http.c (http_loop): Ditto.
7585
7586         * ftp.c (ftp_loop_internal): Use downloaded_increase() instead of
7587         `+=', and downloaded_exceeds_quota() instead of the simple-minded
7588         check.
7589         (ftp_retrieve_list): Ditto.
7590         (ftp_retrieve_dirs): Ditto.
7591         (ftp_retrieve_glob): Ditto.
7592
7593         * retr.c (downloaded_increase): New function.  Notice overflows of
7594         opt.downloaded.
7595         (downloaded_exceeds_quota): Make sure that opt.downloaded is not
7596         used if it overflowed.
7597
7598         * options.h (struct options): New member downloaded_overflow.
7599
7600 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7601
7602         * wget.h (enum): Remove extra space after last enumeration.
7603
7604 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7605
7606         * main.c (main): Use legible_very_long() for printing
7607         opt.downloaded.
7608
7609         * utils.c (legible_1): New function that operates on strings and
7610         does the brunt of legible()'s work.
7611         (legible): Use legible_1().
7612         (legible_very_long): New function; dump the argument with
7613         sprintf(), and call legible_1().
7614
7615         * options.h (struct options): Use VERY_LONG_TYPE for
7616         opt.downloaded.
7617
7618         * sysdep.h (VERY_LONG_TYPE): Define it to have a 64-bit or greater
7619         type.
7620
7621         * config.h.in: Make sure that SIZEOF_LONG and SIZEOF_LONG_LONG get
7622         defined.  Define HAVE_LONG_LONG if long long is available.
7623
7624 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7625
7626         * utils.c (long_to_string): Update with a later, better version.
7627
7628 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7629
7630         * url.c (path_simplify_with_kludge): New function.
7631         (path_simplify_with_kludge): Disable it.  Instead...
7632         (parse_dir): ...make sure that at this point the right thing is
7633         done, i.e. that "query" part of the URL (?...) is always assigned
7634         to the file, never to the directory portion of the path.
7635
7636 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7637
7638         * retr.c (retrieve_url): Detect redirection cycles.
7639
7640 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7641
7642         * url.c (get_urls_html): Decode HTML entities using
7643         html_decode_entities.
7644
7645         * html.c (htmlfindurl): Don't count the `#' in numeric entities
7646         (&#NNN;) as an HTML fragemnt.
7647         (html_decode_entities): New function.
7648
7649 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7650
7651         * html.c (htmlfindurl): Fix recognition of # HTML fragments.
7652
7653 2000-11-01  Hrvoje Niksic  <hniksic@arsdigita.com>
7654
7655         * url.c (construct): Rewritten for clarity.  Avoids the
7656         unnecessary copying and stack-allocation the old version
7657         performed.
7658
7659 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
7660
7661         * ftp.c (getftp): Ditto.
7662
7663         * http.c (gethttp): Rewind the stream when retrying from scratch.
7664
7665 2000-10-31  Hrvoje Niksic  <hniksic@arsdigita.com>
7666
7667         * retr.c (retrieve_url): Use url_concat() to handle relative
7668         redirections instead of /ad hoc/ code.
7669
7670         * url.c (url_concat): New function encapsulating weird
7671         construct().
7672         (urllen_http_hack): New function.
7673         (construct): When constructing new URLs, recognize that `?' does
7674         not form part of the file name in HTTP.
7675
7676 2000-10-13  Adrian Aichner  <adrian@xemacs.org>
7677
7678         * retr.c: Add msec timing support for WINDOWS.
7679         * retr.c (reset_timer): GetSystemTime() on WINDOWS.
7680         * retr.c (elapsed_time): Calculate delta time to msec on WINDOWS.
7681
7682 2000-10-27  Dan Harkless  <wget@harkless.org>
7683
7684         * retr.c (retrieve_url): Manually applied T. Bharath
7685         <TBharath@responsenetworks.com>'s patch to get wget to grok
7686         illegal relative URL redirects.  Reformatted and re-commented it.
7687
7688 2000-10-23  Dan Harkless  <wget@harkless.org>
7689
7690         * connect.c (make_connection and bindport): Manually applied Rob
7691         Mayoff <mayoff@dqd.com>'s 1.5.3 patch to add --bind-address,
7692         changing coding style to GNU's.
7693
7694         * ftp.c (ftp_loop_internal): --delete-after wasn't implemented for
7695         files downloaded via FTP.  Per a comment, .listing files were not
7696         counted towards number of bytes and files downloaded because they're 
7697         deleted anyway.  Well, they aren't under -nr, so count them then.
7698
7699         * init.c: Manually applied Rob Mayoff's 1.5.3 patch to add
7700         --bind-address, alphabetizing, changing coding style to GNU's,
7701         commenting, and renaming cmd_ip_address() to cmd_address() to
7702         imply hostnames also okay.
7703                 
7704         * main.c (main): --delete-after didn't delete the root of the
7705         tree.  Ignore --convert-links if --delete-after was specified.
7706         Manually applied Rob Mayoff's 1.5.3 patch to add --bind-address,
7707         fixing duplicate use of added-since-1.5.3 case value.
7708         (print_help): Clarified that --delete-after deletes local files.
7709         Rob forgot to add a line for his new --bind-address option.
7710                 
7711         * options.h (struct options): Manually applied Rob Mayoff's patch
7712         to add --bind-address (bind_address structure member).
7713                 
7714         * recur.c (recursive_retrieve): Improved comment; added DEBUGP().
7715         Ignore --convert-links if --delete-after was specified.
7716                 
7717         * retr.c (retrieve_from_file): Just added a DEBUGP().
7718                 
7719 2000-10-19  Dan Harkless  <wget@harkless.org>
7720
7721         * ftp.c (ftp_loop_internal): downloaded_file() enumerators changed.
7722         (getftp): Applied Piotr Sulecki <Piotr.Sulecki@ios.krakow.pl>'s
7723         patch to work around FTP servers that incorrectly respond to the
7724         "REST" command with the remaining size rather than the total file size.
7725                 
7726         * http.c (gethttp): Improved a comment and added code to tack on
7727         ".html" to text/html files without that extension when -E specified.
7728         (http_loop): Use new downloaded_file() enumerators and deal with
7729         the case of gethttp() called xrealloc() on u->local.
7730
7731         * init.c (commands): Added new "htmlextension" command.
7732         Also renamed John Daily's cmd_quad() to the more descriptive
7733         cmd_lockable_boolean(), alpha-sorted the CMD_DECLARE()s and
7734         removed duplicate cmd_boolean() declaration.
7735
7736         * main.c (print_help): Added my new -E / --html-extension option.
7737         (main): Undocumented --email-address option previously used -E synonym.
7738         Stole it away for the much more deserving --html-extension's use.
7739
7740         * options.h (struct options): Added html_extension field.
7741
7742         * url.c (convert_links): URL X that we saved as X.html locally due
7743         to -E needs to be backed up as X.orig, not X.html.orig.  Added comments.
7744         (downloaded_file): Now remembers if we added .html extension to a file.
7745
7746         * url.h (downloaded_file_t): Added extra enumerators to support above.
7747         (downloaded_file): Now takes and returns a downloaded_file_t.
7748
7749         * wget.h (unnamed "dt" enum): Added ADDED_HTML_EXTENSION enumerator.
7750         
7751 2000-10-09  Dan Harkless  <wget@harkless.org>
7752
7753         * html.c (htmlfindurl): Added unneeded initialization to quiet warning.
7754                 
7755         * main.c (print_help): Clarified what --retr-symlinks does.
7756         
7757 2000-09-15  John Daily  <jdaily@cyberdude.com>
7758
7759         * init.c: Add support for "always" and "never" values to allow
7760         .wgetrc to override commandline (useful e.g. with .pm files
7761         calling `wget --passive-ftp' when your firewall doesn't allow that).
7762
7763         * ftp.c (getftp): passive_ftp is first option to support always/never.
7764
7765 2000-08-30  Dan Harkless  <wget@harkless.org>
7766
7767         * ftp.c (ftp_retrieve_list): Use new INFINITE_RECURSION #define.
7768         
7769         * html.c: htmlfindurl() now takes final `dash_p_leaf_HTML' parameter.
7770         Wrapped some > 80-column lines.  When -p is specified and we're at a 
7771         leaf node, do not traverse <A>, <AREA>, or <LINK> tags other than 
7772         <LINK REL="stylesheet">.
7773         
7774         * html.h (htmlfindurl): Now takes final `dash_p_leaf_HTML' parameter.
7775         
7776         * init.c: Added new -p / --page-requisites / page_requisites option.
7777
7778         * main.c (print_help): Clarified that -l inf and -l 0 both allow
7779         infinite recursion.  Changed the unhelpful --mirrior description
7780         to simply give the options it's equivalent to.  Added new -p option.
7781         (main): Added some comments; handle new -p / --page-requisites.
7782         
7783         * options.h (struct options): Added new page_requisites field.
7784
7785         * recur.c: Changed "URL-s" to "URLs" and "HTML-s" to "HTMLs".
7786         Calculate and pass down new `dash_p_leaf_HTML' parameter to
7787         get_urls_html().  Use new INFINITE_RECURSION #define.
7788
7789         * retr.c: Changed "URL-s" to "URLs".  get_urls_html() now takes
7790         final `dash_p_leaf_HTML' parameter.
7791
7792         * url.c: get_urls_html() and htmlfindurl() now take final
7793         `dash_p_leaf_HTML' parameter.
7794
7795         * url.h (get_urls_html): Now takes final `dash_p_leaf_HTML' parameter.
7796
7797         * wget.h: Added some comments and new INFINITE_RECURSION #define.
7798         
7799 2000-08-23  Dan Harkless  <wget@harkless.org>
7800
7801         * main.c (print_help): -B / --base was not mentioned.
7802
7803 2000-08-22  Dan Harkless  <wget@harkless.org>
7804
7805         * main.c (print_help): Modified -nc description to mention that it
7806         also prevents the creation of multiple versions of the same file
7807         with ".<number>" suffixes.
7808
7809 2000-07-14  Jan Prikryl  <prikryl@cg.tuwien.ac.at>
7810
7811         * retr.c (retrieve_url): Consistently strdup opt.referer when
7812         setting u->referer.
7813
7814 2000-06-09  Dan Harkless  <wget@harkless.org>
7815
7816         * main.c (print_help): --help output for --waitretry was over 80 cols.
7817
7818 2000-06-09  Hrvoje Niksic  <hniksic@iskon.hr>
7819
7820         * url.c (encode_string): Fix comment.
7821         Suggested by Herold Heiko <Heiko.Herold@previnet.it>.
7822
7823 2000-06-01  Const Kaplinsky  <const@ce.cctpu.edu.ru>
7824
7825         * ftp.c (ftp_retrieve_list): Change permissions only on plain
7826         files.
7827
7828 2000-06-01  Hrvoje Niksic  <hniksic@iskon.hr>
7829
7830         * url.c (str_url): Print the port number only if it's different
7831         from the default port number for that protocol.
7832
7833 2000-05-22  Dan Harkless  <wget@harkless.org>
7834
7835         * main.c (print_help): Added --help line for Damir Dzeko
7836         <ddzeko@zesoi.fer.hr>'s until-now-undocumented --referer option.
7837         Removed comments that --referer and --waitretry were undocumented.
7838         Changed "`.wgetrc' command" to "`.wgetrc'-style command" on --help
7839         line for --execute.
7840
7841 2000-05-18  Hrvoje Niksic  <hniksic@iskon.hr>
7842
7843         * ftp.c (getftp): Ditto.
7844
7845         * http.c (gethttp): Check for return value of fclose/fflush.
7846
7847 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
7848
7849         * host.c (store_hostaddress): Instead of shifting ADDR, start
7850         copying from the correct address.
7851
7852 2000-04-12  Hrvoje Niksic  <hniksic@iskon.hr>
7853
7854         * http.c (gethttp): Don't free REQUEST -- it was allocated with
7855         alloca().
7856         Pointed out by Gisle Vanem <gvanem@eunet.no>.
7857
7858 2000-04-04  Dan Harkless  <wget@harkless.org>
7859
7860         * host.c (store_hostaddress): R. K. Owen's patch introduces a
7861         "left shift count >= width of type" warning on 32-bit
7862         architectures.  Got rid of it by tricking the compiler w/ a variable.
7863         
7864         * url.c (UNSAFE_CHAR): The macro didn't include all the illegal
7865         characters per RFC1738, namely everything above '~'.  It also
7866         generated a warning on OSes where char =~ unsigned char.  Fixed.
7867         
7868 1998-10-17  Hrvoje Niksic  <hniksic@srce.hr>
7869
7870         * http.c (http_process_type): Removed needless strdup(), a memory
7871         leak.
7872
7873 1998-09-25  Hrvoje Niksic  <hniksic@srce.hr>
7874
7875         * html.c (htmlfindurl): Set PH to the first occurrence of `#'.
7876
7877 1998-09-25  Simon Munton  <simonm@m4data.co.uk>
7878
7879         * init.c (wgetrc_file_name): Don't free HOME under Windows.
7880
7881 1998-12-01  "R. K. Owen"  <rkowen@Nersc.GOV>
7882
7883         * host.c (store_hostaddress): Fix for big endian 64-bit machines.
7884
7885 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
7886
7887         * url.c (UNSAFE_CHAR): New macro.
7888         (contains_unsafe): Use it.
7889         (encode_string): Ditto.
7890
7891 1998-12-01  Hrvoje Niksic  <hniksic@srce.hr>
7892
7893         * main.c (i18n_initialize): Use LC_MESSAGES only if available.
7894
7895 2000-03-31  Hrvoje Niksic  <hniksic@srce.hr>
7896
7897         * Use TOUPPER/TOLOWER.
7898
7899 1998-12-22  Alexander V. Lukyanov  <lav@yars.free.net>
7900
7901         * ftp-opie.c (btoe): Zero-terminate OSTORE.
7902
7903 2000-03-21  Hrvoje Niksic  <hniksic@iskon.hr>
7904
7905         * wget.h (DO_REALLOC_FROM_ALLOCA): Ditto.
7906
7907         * sysdep.h (ISALNUM): New macro.
7908         (TOLOWER): Ditto.
7909         (TOUPPER): Ditto.
7910
7911 2000-03-10  Dan Harkless  <wget@harkless.org>
7912
7913         * html.c (idmatch): Implemented checking of my new --follow-tags
7914         and --ignore-tags options.
7915         
7916         * init.c (commands): Added comment reminding people adding new
7917         entries doing allocation to add corresponding freeing in cleanup().
7918         (commands): Added new followtags and ignoretags commands.
7919         (cleanup): Free storage for new followtags and ignoretags.
7920         
7921         * main.c: Use of "comma-separated list" was random -- normalized
7922         it.  Did some alphabetization.  Added comments pointing out
7923         "Options without arguments" and "Options accepting an argument"
7924         sections of long_options[].  Added new options --follow-tags and
7925         -G / --ignore-tags.  Added comment that Damir's --referer is
7926         currently undocumented.  Added comment that Heiko's --waitretry is
7927         partially undocumented (mentioned in --help but not in
7928         wget.texi).  Moved improperly sorted 24, 129, and 'G' cases.
7929         
7930         * options.h (struct options): Added new fields follow_tags and
7931         ignore_tags. 
7932         
7933         * wget.h: Added "#define EQ 0" so we can say "strcmp(a, b) == EQ".
7934         
7935 2000-03-02  Dan Harkless  <wget@harkless.org>
7936
7937         * ftp.c (ftp_loop_internal): Heiko introduced "suggest explicit
7938         braces to avoid ambiguous `else'" warnings.  Eliminated them.
7939         
7940         * http.c (gethttp): Dan Berger's query string patch is totally
7941         bogus.  If you have two different URLs, gen_page.cgi?page1 and
7942         get_page.cgi?page2, they'll both be saved as get_page.cgi and the
7943         second will overwrite the first.  Also, parameters to implicit
7944         CGIs, like "http://www.host.com/db/?2000-03-02" cause the URLs to
7945         be printed with trailing garbage characters, and could seg fault.
7946         Backing out the patch, which Dan B. informed me by email was just
7947         a kludge to download StarOffice from Sun made necessary due to
7948         wget's unconditional escaping of certain characters (room for an
7949         option there?).
7950         (http_loop): Heiko introduced "suggest explicit braces to avoid
7951         ambiguous `else'" warnings.  Eliminated them.
7952         
7953         * main.c: Heiko's --wait / --waitretry backwards compatibility
7954         code looks to have been totally untested -- automatic variable
7955         'wr' was used without being initialized, and a long int was passed
7956         into setval()'s char* val parameter.
7957         
7958         * recur.c (parse_robots): Applied Edward J. Sabol
7959         <sabol@alderaan.gsfc.nasa.gov>'s patch for Guan Yang's reported
7960         problem with "User-agent:<space>*<space>" lines in robots.txt.
7961         
7962         * url.c (parseurl, str_url): Removing Dan Berger's code (see
7963         http.c above for explanation).
7964         
7965 1999-08-25  Heiko Herold  <Heiko.Herold@previnet.it>
7966
7967         * ftp.c: Respect new option waitretry.
7968
7969 2000-01-30  Damir Dzeko  <ddzeko@zesoi.fer.hr>
7970
7971         * http.c (gethttp): Send custom Referer, if required.
7972
7973 1999-09-24  Charles G Waldman  <cgw@fnal.gov>
7974
7975         * netrc.c (parse_netrc): Allow passwords to contain spaces.
7976
7977         * netrc.c (parse_netrc): New function.
7978
7979 1999-09-17  Dan Berger  <dberger@ix.netcom.com>
7980
7981         * http.c (gethttp): Send it.
7982
7983         * url.c (parseurl): Detect query string in HTTP URL-s.
7984         (str_url): Print it.
7985
7986 2000-03-02  HIROSE Masaaki  <hirose31@t3.rim.or.jp>
7987
7988         * html.c (html_allow): Add <link href=...> and <script src=...>.
7989
7990 1999-05-02  andrew deryabin  <djsf@softhome.net>
7991
7992         * http.c (gethttp): Specify port in `Host' header only if it's
7993         different from 80.
7994
7995 1998-11-03  Edward J. Sabol  <sabol@alderaan.gsfc.nasa.gov>
7996
7997         * recur.c (recursive_retrieve): If a finite maximum depth is
7998         specified, and we're are already at that depth, don't download the
7999         HTML file for parsing.
8000
8001 2000-03-01  Dan Harkless  <wget@harkless.org>
8002
8003         * ftp.c (ftp_loop_internal): Call new downloaded_file() function,
8004         even though we don't do conversion on HTML files retrieved via
8005         FTP, so _current_ usage of downloaded_file() makes this call unneeded. 
8006         (ftp_retrieve_list): Added a comment saying where we need to
8007         stat() a .orig file if FTP'd HTML file conversion is ever implemented.
8008         (ftp_retrieve_list): "Local file '%s' is more recent," is sometimes
8009         a lie -- reworded as "Server file no newer than local file '%s' --".
8010         
8011         * http.c (http_loop): Fixed a typo and clarified a comment.
8012         (http_loop): When -K and -N are specified together, compare size
8013         and timestamp of server file X against local file X.orig (if
8014         extant) rather than converted local file X.
8015         (http_loop): "Local file '%s' is more recent," is sometimes a lie
8016         -- reworded as "Server file no newer than local file '%s' --".
8017         (http_loop): Call new downloaded_file() function to prevent
8018         wrongful overwriting of .orig file when -N is specified.
8019         
8020         * url.c (convert_links): When -K specified, only rename X to
8021         X.orig if downloaded_file() returns TRUE.  Otherwise when we skip
8022         file X due to -N, we clobber an X.orig from a previous invocation.
8023         (convert_links): Call the failsafe xstrdup(), not the real strdup().
8024         (convert_links): Added a note asking anyone who understands how
8025         multiple URLs can correspond to a single file to comment it.
8026         (downloaded_file): Added this new function.
8027         
8028         * url.h (downloaded_file): Added prototype for this new function
8029         as well as its downloaded_file_t enum type.
8030
8031         * wget.h (boolean): Added this new typedef and TRUE and FALSE #defines.
8032
8033 2000-02-29  Dan Harkless  <wget@harkless.org>
8034
8035         * version.c: Upped version to developer-only "1.5.3+dev".
8036
8037 2000-02-18  Dan Harkless  <wget@harkless.org>
8038
8039         * init.c (backup_converted): Added this new option.
8040
8041         * main.c (-K / --backup-converted): Added this new option.
8042
8043         * options.h (backup_converted): Added this new option.
8044
8045         * url.c (convert_links): When backup_converted is specified, save
8046         file X as X.orig before converting.
8047
8048         * url.h (urlpos): Fixed typo -- said "Rekative" instead of "Relative".
8049
8050 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
8051
8052         * version.c: Wget 1.5.3 is released.
8053
8054 1998-09-21  Hrvoje Niksic  <hniksic@srce.hr>
8055
8056         * host.c (ftp_getaddress): Don't warn when reverse-lookup of local 
8057         address doesn't yield FQDN.
8058
8059 1998-09-21  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
8060
8061         * cmpt.c (strerror): Fix declaration of sys_errlist.
8062
8063 1998-09-11  Hrvoje Niksic  <hniksic@srce.hr>
8064
8065         * main.c (main): Don't use an array subscript as the first
8066         argument to STRDUP_ALLOCA.
8067         From Kaveh R. Ghazi.
8068
8069 1998-09-11  Szakacsits Szabolcs  <szaka@sienet.hu>
8070
8071         * html.c (htmlfindurl): Download table background.
8072
8073 1998-09-11  Hans Grobler  <grobh@conde.ee.sun.ac.za>
8074
8075         * init.c (parse_line): Would free *com before allocating it.
8076         (parse_line): Would free com instead of *com.
8077
8078 1998-09-10  Howard Gayle  <howard@fjst.com>
8079
8080         * url.c (get_urls_html): Would drop the last character of the
8081         link.
8082
8083 1998-09-10  Hrvoje Niksic  <hniksic@srce.hr>
8084
8085         * http.c (http_loop): Don't print status code if quiet.
8086
8087 1998-09-10  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
8088
8089         * log.c: Use <stdarg.h> only when __STDC__.
8090
8091 1998-09-10  Adam D. Moss  <adam@foxbox.org>
8092
8093         * html.c (htmlfindurl): Download <layer src=...>.
8094
8095 1998-09-10  Howard Gayle  <howard@fjst.com>
8096
8097         * ftp.c (ftp_retrieve_list): Don't update the time stamp of a file 
8098         not retrieved.
8099
8100 1998-06-27  Hrvoje Niksic  <hniksic@srce.hr>
8101
8102         * utils.c: Include <libc.h> on NeXT.
8103
8104 1998-06-26  Heinz Salzmann  <heinz.salzmann@intermetall.de>
8105
8106         * url.c (get_urls_html): Fix calculation of URL position.
8107
8108 1998-06-23  Hrvoje Niksic  <hniksic@srce.hr>
8109
8110         * version.c: Wget 1.5.2 is released.
8111
8112 1998-06-23  Dave Love  <d.love@dl.ac.uk>
8113
8114         * ftp.c, init.c, netrc.c: Include errno.h.
8115
8116         * http.c: Include errno.h and time header.
8117
8118         * Makefile.in (exext): Define.
8119         (install.bin, uninstall.bin): Use it.
8120
8121 1998-06-21  Hrvoje Niksic  <hniksic@srce.hr>
8122
8123         * http.c (http_loop): Don't attempt to compare local and remote
8124         sizes if the remote size is unknown.
8125
8126 1998-06-16  Hrvoje Niksic  <hniksic@srce.hr>
8127
8128         * url.c (get_urls_html): Use malloc() instead of alloca in the
8129         loop.
8130
8131 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
8132
8133         * version.c: Wget 1.5.2-b4 is released.
8134
8135 1998-06-13  Hrvoje Niksic  <hniksic@srce.hr>
8136
8137         * url.c (get_urls_html): Ignore spaces before and after the URI.
8138
8139 1998-06-08  Wanderlei Antonio Cavassin  <cavassin@conectiva.com.br>
8140
8141         * ftp.c (getftp): Translate `done'.
8142
8143 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
8144
8145         * version.c: Wget 1.5.2-b3 is released.
8146
8147 1998-06-06  Alexander Kourakos  <awk@bnt.com>
8148
8149         * init.c (cleanup): Close dfp, don't free it.
8150
8151 1998-06-06  Hrvoje Niksic  <hniksic@srce.hr>
8152
8153         * utils.c (make_directory): Twiddle.
8154
8155         * config.h.in: Added template for access().
8156
8157 1998-06-05  Mathieu Guillaume  <mat@cythere.com>
8158
8159         * html.c (htmlfindurl): Download <input src=...>
8160
8161 1998-06-03  Hrvoje Niksic  <hniksic@srce.hr>
8162
8163         * utils.c (file_exists_p): Use access() with two arguments.
8164
8165 1998-05-27  Martin Kraemer  <Martin.Kraemer@mch.sni.de>
8166
8167         * netrc.c (parse_netrc): Correct logic.
8168
8169 1998-05-27  Hrvoje Niksic  <hniksic@srce.hr>
8170
8171         * ftp.c (getftp): Added `break'; suggested by Lin Zhe Min
8172         <ljm@ljm.wownet.net>.
8173
8174 1998-05-24  Hrvoje Niksic  <hniksic@srce.hr>
8175
8176         * version.c: Wget 1.5.2-b2 is released.
8177
8178 1998-05-18  Juan Jose Rodriguez  <jcnsoft@jal1.telmex.net.mx>
8179
8180         * mswindows.h: Don't translate mkdir to _mkdir under Borland.
8181
8182 1998-05-17  Hrvoje Niksic  <hniksic@srce.hr>
8183
8184         * retr.c (elapsed_time): Return correct value when
8185         HAVE_GETTIMEOFDAY is undefined.
8186
8187 1998-05-13  Hrvoje Niksic  <hniksic@srce.hr>
8188
8189         * version.c: Wget 1.5.2-b1 is released.
8190
8191 1998-05-08  Hrvoje Niksic  <hniksic@srce.hr>
8192
8193         * getopt.c (_getopt_internal): Use exec_name instead of argv[0].
8194         (_getopt_internal): Don't translate `#if 0'-ed strings.
8195
8196 1998-05-06  Douglas E. Wegscheid  <wegscd@whirlpool.com>
8197
8198         * mswindows.c (ws_handler): Use fork_to_background().
8199
8200 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
8201
8202         * version.c: Wget 1.5.1 is released.
8203
8204 1998-05-05  Hrvoje Niksic  <hniksic@srce.hr>
8205
8206         * http.c (parse_http_status_line): Avoid `minor' and `major'
8207         names.
8208
8209 1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
8210
8211         * utils.c (mkdirhier): Renamed to make_directory.
8212
8213 1998-05-01  Hrvoje Niksic  <hniksic@srce.hr>
8214
8215         * mswindows.c (fork_to_background): Define under Windows.
8216
8217         * utils.c (fork_to_background): New function.
8218
8219         * html.c (htmlfindurl): Removed rerdundant casts.
8220
8221 1998-05-01  Douglas E. Wegscheid  <wegscd@whirlpool.com>
8222
8223         * mswindows.c (ws_mypath): Cache the path.
8224
8225 1998-04-30  Douglas E. Wegscheid  <wegscd@whirlpool.com>
8226
8227         * ftp.h: Prefix enum ftype members with FT_.
8228
8229         * ftp-ls.c, ftp.c, html.h: Adjust accordingly.
8230
8231         * mswindows.h: Use stat under Borland, _stat under MSVC.
8232
8233 1998-04-28  Hrvoje Niksic  <hniksic@srce.hr>
8234
8235         * http.c (known_authentication_scheme_p): New function.
8236         (gethttp): Handle authorization more correctly.
8237
8238         * ftp-basic.h: Removed.
8239
8240         * cmpt.h: Removed.
8241
8242         * utils.c: Include <unistd.h> before <pwd.h>; needed under SunOS
8243         with gcc 2.8.
8244         (numdigit): Use `while' loop.
8245
8246         * http.c (create_authorization_line): Detect authentication
8247         schemes case-insensitively.
8248
8249         * http.c (extract_header_attr): Use strdupdelim().
8250         (digest_authentication_encode): Move declaration of local
8251         variables to smaller scope.
8252         (digest_authentication_encode): Reset REALM, OPAQUE and NONCE.
8253         (create_authorization_line): Detect authentication schemes
8254         case-insensitively.
8255
8256         * utils.c (touch): Constify.
8257
8258         * http.c (gethttp): Report a nicer error when no data is received.
8259
8260         * rbuf.h (RBUF_READCHAR): Ditto.
8261
8262         * ftp-basic.c (ftp_response): Use sizeof.
8263
8264 1998-04-27  Hrvoje Niksic  <hniksic@srce.hr>
8265
8266         * retr.c (print_percentage): EXPECTED is long, not int.
8267         (print_percentage): Use floating-point arithmetic to avoid
8268         overflow with large files' sizes multiplied with 100.
8269
8270 1998-04-27  Gregor Hoffleit  <flight@mathi.uni-heidelberg.de>
8271
8272         * config.h.in: Added pid_t stub.
8273
8274         * sysdep.h (S_ISREG): Moved here from mswindows.h (NeXT doesn't
8275         define it).
8276
8277 1998-04-20  Hrvoje Niksic  <hniksic@srce.hr>
8278
8279         * version.c: Wget 1.5.0 is released.
8280
8281 1998-04-18  Hrvoje Niksic  <hniksic@srce.hr>
8282
8283         * url.c (str_url): Ditto.
8284
8285         * ftp-basic.c (ftp_rest): Use new name.
8286
8287         * utils.c (long_to_string): Renamed from prnum().
8288
8289 1998-04-16  Hrvoje Niksic  <hniksic@srce.hr>
8290
8291         * version.c: Wget 1.5-b17 is released.
8292
8293 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
8294
8295         * headers.c (header_get): New argument FLAGS.
8296
8297         * http.c (gethttp): If request is malformed, bail out of the
8298         header loop.
8299         (gethttp): Check for empty header *after* the status line checks.
8300         (gethttp): Disallow continuations for status line.
8301
8302 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
8303
8304         * version.c: Wget 1.5-b16 is released.
8305
8306 1998-04-08  Hrvoje Niksic  <hniksic@srce.hr>
8307
8308         * init.c (commands): Renamed `always_rest' to `continue'.
8309
8310 1998-04-05  Hrvoje Niksic  <hniksic@srce.hr>
8311
8312         * all: Use it.
8313
8314         * log.c (logputs): New argument.
8315         (logvprintf): Ditto.
8316         (logprintf): Ditto.
8317
8318 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
8319
8320         * http.c (http_atotm): Update comment.
8321
8322         * main.c (i18n_initialize): Set LC_MESSAGES, not LC_ALL.
8323
8324         * wget.h: Renamed ENABLED_NLS to HAVE_NLS.
8325
8326         * main.c (i18n_initialize): New function.
8327         (main): Use it.
8328
8329         * log.c: Include <unistd.h>.
8330
8331         * retr.c (show_progress): Cast alloca to char *.
8332
8333 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
8334
8335         * version.c: Wget 1.5-b15 is released.
8336
8337 1998-04-04  Hrvoje Niksic  <hniksic@srce.hr>
8338
8339         * utils.h: Declare file_non_directory_p().
8340
8341 1998-04-03  Hrvoje Niksic  <hniksic@srce.hr>
8342
8343         * main.c (main): It's `tries', not `numtries' now.
8344
8345 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
8346
8347         * init.c (getperms): Removed.
8348
8349 1998-04-01  Tim Charron  <tcharron@interlog.com>
8350
8351         * log.c (logvprintf): Don't use ARGS twice.
8352
8353 1998-04-01  John  <john@futuresguide.com>
8354
8355         * mswindows.c: Cleaned up.
8356
8357 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
8358
8359         * version.c: Wget 1.5-b14 is released.
8360
8361 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
8362
8363         * ftp-opie.c (STRLEN4): New macro.
8364         (btoe): Use it.
8365
8366 1998-04-01  Junio Hamano  <junio@twinsun.com>
8367
8368         * http.c: Document all the Digest functions.
8369
8370 1998-04-01  Hrvoje Niksic  <hniksic@srce.hr>
8371
8372         * utils.c (file_non_directory_p): Renamed from isfile().
8373
8374         * mswindows.h (S_ISREG): New macro, suggested by Tim Adam.
8375
8376 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
8377
8378         * utils.c (mkdirhier): Use 0777 instead of opt.dirmode.
8379
8380         * init.c (cmd_spec_dotstyle): Use 48 dots per line for binary
8381         style.
8382         (cmd_permissions): Removed.
8383
8384         * config.h.in: Add template for WORDS_BIGENDIAN.
8385
8386 1998-03-31  Junio Hamano  <junio@twinsun.com>
8387
8388         * http.c (HEXD2asc): New macro.
8389         (dump_hash): Use it.
8390
8391 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
8392
8393         * version.c: Wget 1.5-b13 is released.
8394
8395 1998-03-31  Hrvoje Niksic  <hniksic@srce.hr>
8396
8397         * main.c (main): Don't try to use `com'.
8398
8399 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
8400
8401         * init.c (cmd_permissions): New function.
8402
8403 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
8404
8405         * version.c: Wget 1.5-b12 is released.
8406
8407 1998-03-30  Hrvoje Niksic  <hniksic@srce.hr>
8408
8409         * init.c (commands): Renamed `numtries' to `tries'.
8410         (cmd_spec_debug): Removed.
8411         (home_dir): Under Windows, return `C:\' if HOME is undefined.
8412
8413 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
8414
8415         * config.h.in: Define _XOPEN_SOURCE.
8416
8417         * init.c (check_user_specified_header): New function.
8418         (cmd_spec_header): Use it.
8419         (cmd_spec_useragent): New function.
8420
8421 1998-03-29  Hrvoje Niksic  <hniksic@srce.hr>
8422
8423         * version.c: Wget 1.5-b11 is released.
8424
8425 1998-03-28  Hrvoje Niksic  <hniksic@srce.hr>
8426
8427         * wget.h: Include <libintl.h> only if NLS is enabled.
8428
8429 1998-03-26  Hrvoje Niksic  <hniksic@srce.hr>
8430
8431         * options.h (struct options): Made `wait' a long.
8432         (struct options): Ditto for `timeout'.
8433
8434 1998-03-19  Hrvoje Niksic  <hniksic@srce.hr>
8435
8436         * utils.c (exists): Renamed to file_exists_p.
8437         (file_exists_p): Use access() if available.
8438
8439 1998-03-17  Hrvoje Niksic  <hniksic@srce.hr>
8440
8441         * utils.c (memfatal): Set save_log_p to 0 to avoid potential
8442         infloop.
8443
8444         * log.c: do_logging -> save_log_p.
8445
8446         * config.h.in: Added template for HAVE_VSNPRINTF.
8447
8448 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
8449
8450         * init.c: Ditto.
8451
8452         * http.c: Protect declaration against non-ANSI compiler.
8453
8454         * log.c (logvprintf): Use vsnprintf() if available.
8455
8456         * getopt.c (main): Don't translate test stuff.
8457
8458 1998-03-16  Hrvoje Niksic  <hniksic@srce.hr>
8459
8460         * version.c: Wget 1.5-b10 is released.
8461
8462 1998-03-11  Hrvoje Niksic  <hniksic@srce.hr>
8463
8464         * ftp.c (getftp): Don't translate "CWD %s".
8465
8466         * wget.h (GCC_FORMAT_ATTR): Renamed from FORMAT_ATTR.
8467
8468 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
8469
8470         * ftp-opie.c (btoe): Use memcpy() instead of strncat().
8471
8472         * log.c (logputs): New function.
8473         (logvprintf): Renamed from vlogmsg; use logputs().
8474
8475         * retr.c (show_progress): Print `[100%]' when the retrieval is
8476         finished.
8477
8478         * init.c (run_wgetrc): Use FILE, not PATH.
8479         (wgetrc_file_name): Ditto.
8480
8481 1998-03-07  Tim Adam  <tma@osa.com.au>
8482
8483         * recur.c (parse_robots): Correctly reset `entries' on empty
8484         disallow.
8485
8486 1998-03-07  Hrvoje Niksic  <hniksic@srce.hr>
8487
8488         * init.c (cmd_spec_debug): Use cmd_boolean().
8489
8490 1998-02-23  Hrvoje Niksic  <hniksic@srce.hr>
8491
8492         * http.c (gethttp): Create proxy-authorization correctly.
8493
8494 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
8495
8496         * md5.c: Ditto.
8497
8498         * getopt.c: Use ANSI function definitions.
8499
8500         * ftp-opie.c: New file.
8501
8502         * options.h: Don't redefine EXTERN.
8503
8504         * init.c: Sort it correctly.
8505
8506 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
8507
8508         * version.c: Wget 1.5-b9 is released.
8509
8510 1998-02-22  Hrvoje Niksic  <hniksic@srce.hr>
8511
8512         * recur.c (recursive_retrieve): Reset `first_time'.
8513
8514         * ftp.c (getftp): Added `default' clause to switches of uerr_t.
8515
8516         * rbuf.c (rbuf_peek): Simplified.
8517         (rbuf_flush): Use MINVAL.
8518
8519         * wget.h (MINVAL): Moved from url.h.
8520
8521         * rbuf.h (RBUF_FD): New macro.
8522
8523         * url.c (add_url): Add to the head of the list.
8524
8525         * ftp.c (ftp_retrieve_list): Set the permissions to downloaded
8526         file.
8527         (getftp): Set the default permissions to 0600.
8528
8529 1998-02-21  Hrvoje Niksic  <hniksic@srce.hr>
8530
8531         * url.c (get_urls_html): Ditto.
8532         (convert_links): Ditto.
8533
8534         * recur.c (parse_robots): Ditto.
8535
8536         * html.c (ftp_index): Ditto.
8537
8538         * ftp-ls.c (ftp_parse_unix_ls): Open file as binary.
8539
8540         * init.c (defaults): Initialize `opt' to zero via memset.
8541
8542         * http.c (digest_authentication_encode): goto considered harmful.
8543
8544 1998-02-19  Hrvoje Niksic  <hniksic@srce.hr>
8545
8546         * ftp.c (delelement): Simplify and fix leak.
8547
8548 1998-02-18  Hrvoje Niksic  <hniksic@srce.hr>
8549
8550         * http.c (dump_hash): Use HEXD2ASC instead of home-grown stuff.
8551
8552         * url.h (HEXD2ASC): Removed warning.
8553
8554         * init.c (comind): Use binary search.
8555         (commands): Reorganized.
8556         (setval): Ditto.
8557         (cmd_boolean): New function.
8558         (cmd_number): Ditto.
8559         (cmd_number_inf): Ditto.
8560         (cmd_string): Ditto.
8561         (cmd_vector): Ditto.
8562         (cmd_directory_vector): Ditto.
8563         (cmd_bytes): Ditto.
8564         (cmd_time): Ditto.
8565         (cmd_spec_debug): Ditto.
8566         (cmd_spec_dirmode): Ditto.
8567         (cmd_spec_dirstruct): Ditto.
8568         (cmd_spec_dotstyle): Ditto.
8569         (cmd_spec_header): Ditto.
8570         (cmd_spec_htmlify): Ditto.
8571         (cmd_spec_mirror): Ditto.
8572         (cmd_spec_outputdocument): Ditto.
8573         (cmd_spec_recursive): Ditto.
8574         (settime): Merged with cmd_time().
8575         (setbytes): Merged with cmd_bytes().
8576         (setonoff): Merged with cmd_boolean().
8577         (onoff): Ditto.
8578
8579 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
8580
8581         * Makefile.in (distclean): Remove `config.h'.
8582
8583 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
8584
8585         * version.c: Wget 1.5-b8 is released.
8586
8587 1998-02-17  Hrvoje Niksic  <hniksic@srce.hr>
8588
8589         * http.c (digest_authentication_encode): New function.
8590         (create_authorization_line): Use it.
8591         (dump_hash): New function.
8592         (digest_authentication_encode): Use it.
8593
8594         * fnmatch.c: Renamed from `mtch.c'.
8595
8596 1998-02-15  Karl Eichwalder  <ke@suse.de>
8597
8598         * main.c (main): Tag "Written by..." string as translatable.
8599
8600 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
8601
8602         * wget.h (FREE_MAYBE): New macro.
8603
8604         * http.c (create_authorization_line): Don't use ANSI C string
8605         concatenation feature.
8606         (basic_authentication_encode): Use alloca() for temporary
8607         variables.
8608
8609         * recur.h: Ditto.
8610
8611         * http.c: Ditto.
8612
8613         * headers.h: Ditto.
8614
8615         * ftp-basic.c: Protect declaration against non-ANSI compiler.
8616
8617         * http.c (create_authorization_line): Cast `unsigned char *' to
8618         `char *' for sprintf, to shut up the noisy Digital Unix cc.
8619
8620 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
8621
8622         * version.c: Wget 1.5-b7 is released.
8623
8624 1998-02-15  Hrvoje Niksic  <hniksic@srce.hr>
8625
8626         * cmpt.c (strstr): Synched with glibc-2.0.6.
8627
8628         * ftp-basic.c (calculate_skey_response): Ditto.
8629         (calculate_skey_response): Use alloca().
8630
8631         * http.c (create_authorization_line): Work with FSF's version of
8632         md5.c.
8633
8634         * md5.c: New file, from GNU libc.
8635
8636 1998-02-14  Hrvoje Niksic  <hniksic@srce.hr>
8637
8638         * url.h (URL_CLEANSE): Name the temporary variable more carefully.
8639
8640 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
8641
8642         * http.c (basic_authentication_encode): New function, instead of
8643         the macro.
8644
8645 1998-02-13  Junio Hamano  <junio@twinsun.com>
8646
8647         * http.c: Add HTTP-DA support.
8648         * ftp-basic.c: Add Opie/S-key support.
8649         * config.h.in, Makefile.in: Add HTTP-DA and Opie/S-key support.
8650         * md5.c, md5.h: New files.
8651
8652 1998-02-13  Hrvoje Niksic  <hniksic@srce.hr>
8653
8654         * http.c (http_process_range): Renamed from hprocrange().
8655         (http_process_range): Parse the whole header.
8656
8657         * headers.c: New file.
8658         (header_process): New function.
8659         (header_get): Renamed from fetch_next_header.
8660
8661         * all: Include utils.h only where necessary.
8662
8663         * wget.h: Declare xmalloc(), xrealloc() and xstrdup() here.
8664
8665         * wget.h: Add provisions for dmalloc.
8666
8667 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
8668
8669         * version.c: Wget 1.5-b6 is released.
8670
8671 1998-02-12  Hrvoje Niksic  <hniksic@srce.hr>
8672
8673         * ftp.c (ftp_loop): Determine `filename' more precisely.
8674
8675         * init.c (setval): Don't set `opt.quiet' if output-document is
8676         `-'.
8677
8678         * log.c (log_init): Print to STDERR instead of STDOUT.
8679         (vlogmsg): Use STDERR by default.
8680         (logflush): Ditto.
8681
8682 1998-02-11  Simon Josefsson  <jas@pdc.kth.se>
8683
8684         * host.c: Use addr_in again.
8685
8686 1998-02-08  Karl Eichwalder  <karl@suse.de>
8687
8688         * http.c (gethttp): Fixed typo.
8689
8690 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
8691
8692         * version.c: Wget 1.5-b5 is released.
8693
8694 1998-02-08  Hrvoje Niksic  <hniksic@srce.hr>
8695
8696         * retr.c (show_progress): Use it.
8697
8698         * log.c (logflush): New function.
8699
8700         * wget.h: Utilize __attribute__ if on gcc.
8701
8702 1998-02-07  Hrvoje Niksic  <hniksic@srce.hr>
8703
8704         * http.c (base64_encode_line): New argument LENGTH.
8705         (BASIC_AUTHENTICATION_ENCODE): Use it.
8706         (BASIC_AUTHENTICATION_ENCODE): Take length of HEADER into account.
8707
8708         * main.c (main): Fixed fprintf() format mismatch.
8709
8710 1998-02-06  Hrvoje Niksic  <hniksic@srce.hr>
8711
8712         * version.c: Wget 1.5-b4 is released.
8713
8714 1998-02-03  Simon Josefsson  <jas@pdc.kth.se>
8715
8716         * host.c: use sockaddr_in instead of addr_in.
8717
8718 1998-02-04  Hrvoje Niksic  <hniksic@srce.hr>
8719
8720         * init.c (cleanup): Use it.
8721
8722         * recur.c (recursive_cleanup): New function.
8723
8724         * retr.c (retrieve_from_file): Ditto.
8725
8726         * main.c (main): Use it.
8727
8728         * recur.c (recursive_reset): New function.
8729
8730         * retr.c (retrieve_from_file): Ditto.
8731
8732         * main.c (main): Simplify call to recursive_retrieve().
8733
8734         * recur.c (recursive_retrieve): Removed FLAGS argument.
8735
8736         * http.c (gethttp): Changed call to iwrite().
8737
8738 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
8739
8740         * url.c (get_urls_html): Ditto.
8741         (free_urlpos): Ditto.
8742         (mkstruct): Ditto.
8743         (construct): Ditto.
8744
8745         * retr.c (retrieve_url): Move declaration of local variables to
8746         smaller scope.
8747
8748         * url.c (urlproto): Use it.
8749         (parseurl): Ditto.
8750         (str_url): Ditto.
8751         (get_urls_html): Ditto.
8752
8753         * utils.h (ARRAY_SIZE): New macro.
8754
8755         * url.c (proto): Moved from url.h.
8756
8757         * url.h (URL_CLEANSE): Reformatted.
8758         (USE_PROXY_P): Renamed from USE_PROXY.
8759
8760         * ftp-basic.c: Adjust to the new interface of iwrite().
8761
8762         * ftp-basic.c (ftp_port): Use alloca().
8763
8764 1998-02-03  Hrvoje Niksic  <hniksic@srce.hr>
8765
8766         * version.c: Wget 1.5-b3 is released.
8767
8768         * host.c (ftp_getaddress): Don't print to stderr directly.
8769
8770         * init.c (setbytes): Support `g' for gigabytes.
8771         (cmdtype): New specification CTIME.
8772         (setval): Use it with settime().
8773         (commands): Use it for WAIT and TIMEOUT.
8774
8775 1998-02-02  Hrvoje Niksic  <hniksic@srce.hr>
8776
8777         * http.c (BASIC_AUTHENTICATION_ENCODE): New macro.
8778         (gethttp): Use it.
8779
8780         * utils.c (unique_name_1): Moved from url.c.
8781         (unique_name): Ditto.
8782
8783         * url.c (url_filename): Ditto.
8784
8785         * log.c (redirect_output): Changed call to unique_name().
8786
8787         * url.c (unique_name_1): Renamed from unique_name().
8788         (unique_name): Changed interface.
8789
8790         * init.c (enum cmdid): Moved from init.h.
8791         (cmdtype): Ditto.
8792         (struct cmd): Ditto.
8793
8794         * main.c (main): Use it.
8795         (main): Moved `--backups' to not have a short option.
8796
8797         * options.h (struct options): New member BACKGROUND.
8798
8799         * main.c (print_help): Rearranged.
8800         (main): New long options for -n* short options: --no-directories,
8801         --no-host-directories, --non-verbose, --no-host-lookup and
8802         --dont-remove-listing.
8803
8804 1998-02-01  Hrvoje Niksic  <hniksic@srce.hr>
8805
8806         * main.c (main): Use log_close().
8807
8808         * log.c: New variable LOGFP.
8809         (vlogmsg): Use it.
8810         (redirect_output): Don't open /dev/null; set LOGFP to stdin
8811         instead.
8812         (log_close): New function.
8813
8814         * options.h (struct options): Removed LFILE.
8815
8816         * log.c (log_enable): Removed.
8817
8818         * main.c (main): Use it.
8819
8820         * log.c (log_init): New function.
8821
8822         * url.c (get_urls_html): Removed needless assignment to BASE.
8823
8824         * host.c (add_hlist): Don't set CMP needlessly.
8825
8826         * utils.c (match_backwards): Ditto.
8827         (in_acclist): Ditto.
8828
8829         * url.c (findurl): Ditto.
8830
8831         * netrc.c (parse_netrc): Ditto.
8832
8833         * log.c (log_dump): Ditto.
8834
8835         * html.c (html_quote_string): Ditto.
8836
8837         * ftp-basic.c (ftp_request): Made static.
8838
8839         * connect.c: Made global variables static.
8840
8841         * url.c (construct): Ditto.
8842
8843         * init.c (init_path): Avoid assignment inside `if'-condition.
8844
8845         * ftp.c: Don't include in.h or winsock.h.
8846
8847         * ftp.c (ftp_loop): Use SZ.
8848
8849         * connect.c (bindport): Cast &addrlen to int *.
8850         (conaddr): Ditto.
8851
8852         * init.c (initialize): Don't use SYSTEM_WGETRC unconditionally.
8853
8854 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
8855
8856         * ftp.c (getftp): Initialize opt.ftp_pass here.
8857         (ftp_retrieve_dirs): Use alloca().
8858
8859         * init.c (defaults): Don't initialize opt.ftp_pass.
8860
8861         * sysdep.h (S_ISLNK): Declare for OS/2; ditto for lstat.
8862         From Ivan F. Martinez <ivanfm@ecodigit.com.br>.
8863
8864 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
8865
8866         * recur.c (parse_robots): Check for comments more correctly.
8867
8868         * host.c (ftp_getaddress): Use STRDUP_ALLOCA.
8869         (ftp_getaddress): Add diagnostics when reverse-lookup yields only
8870         hostname.
8871
8872 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
8873
8874         * version.c: Wget 1.5-b2 is released.
8875
8876         * netrc.c (NETRC_FILE_NAME): Moved from netrc.h.
8877
8878         * utils.c (proclist): Pass FNM_PATHNAME to fnmatch().
8879
8880         * ftp-basic.c (ftp_pasv): Avoid unnecessary casting to unsigned
8881         char.
8882
8883         * log.c: Don't attempt to hide arguments from ansi2knr.
8884
8885         * cmpt.c: Synched strptime() and mktime() with glibc-2.0.6.
8886
8887         * ansi2knr.c: Use a later version, from fileutils-3.16l alpha.
8888
8889         * ftp.c (getftp): Ditto.
8890
8891         * http.c (gethttp): Use it.
8892
8893         * retr.c (get_contents): New argument EXPECTED; pass it to
8894         show_progress().
8895         (show_progress): New argument EXPECTED; use it to display
8896         percentages.
8897
8898         * init.c (setval): Ditto.
8899
8900         * http.c (gethttp): Ditto.
8901         (http_loop): Ditto.
8902
8903         * ftp.c (getftp): Ditto.
8904         (ftp_loop_internal): Ditto.
8905
8906         * ftp-ls.c (ftp_parse_unix_ls): Use abort() instead of assert(0).
8907
8908         * sysdep.h (CLOSE): Simplify; use DEBUGP.
8909
8910         * netrc.c (search_netrc): Use alloca().
8911
8912         * init.c (defaults): Initialize no_flush.
8913
8914         * log.c (vlogmsg): Don't flush if no_flush.
8915
8916         * options.h (struct options): New variable no_flush.
8917
8918         * main.c (main): Don't play games with buffering.
8919
8920         * log.c (vlogmsg): Flush the output after every message.
8921
8922 1998-01-31  Hrvoje Niksic  <hniksic@srce.hr>
8923
8924         * init.c (parse_line): Ditto.
8925
8926         * url.c (get_urls_html): Ditto.
8927
8928         * main.c (main): Don't cast to unsigned char.
8929
8930         * init.c (run_wgetrc): Don't cast to unsigned char.
8931         (parse_line): Accept char instead of unsigned char.
8932
8933         * html.c (htmlfindurl): Use char instead of unsigned char.
8934
8935         * all: Use them.
8936
8937         * sysdep.h: Add wrappers to ctype macros to make them
8938         eight-bit-clean:
8939
8940 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
8941
8942         * html.c (htmlfindurl): Download <img lowsrc=...>
8943
8944         * main.c (main): Ignore SIGPIPE.
8945
8946         * connect.c (select_fd): New argument WRITEP.
8947         (iwrite): Call select_fd().
8948
8949 1997-02-27  Fila Kolodny <fila@ibi.com>
8950
8951         * ftp.c (ftp_retrieve_list): If retrieving symlink and the proper
8952         one already exists, just skip it.
8953
8954 1998-01-30  Hrvoje Niksic  <hniksic@srce.hr>
8955
8956         * http.c (gethttp): Cosmetic changes.
8957
8958         * http.c (check_end): Allow `+D...' instead of `GMT'.
8959         From Fabrizio Pollastri <pollastri@cstv.to.cnr.it>.
8960
8961         * url.c (process_ftp_type): New function.
8962         (parseurl): Use it.
8963
8964         * connect.c (iwrite): Allow writing in a few chunks.
8965         (bindport): Made SRV static, so addr can point to it.
8966         (select_fd): Removed HPUX kludge.
8967
8968         * host.c (free_hlist): Incorporated into clean_hosts().
8969
8970 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
8971
8972         * host.c (hlist): Made static.
8973         (search_address): Cosmetic change.
8974
8975 1998-01-29  Hrvoje Niksic  <hniksic@srce.hr>
8976
8977         * version.c: Wget v1.5-b1 is released.
8978
8979         * http.c (hgetlen): Use sizeof() to get the header length.
8980         (hgetrange): Ditto.
8981         (hgettype): Ditto.
8982         (hgetlocation): Ditto.
8983         (hgetmodified): Ditto.
8984         (haccepts_none): Ditto.
8985
8986         * main.c (main): Updated `--version' and `--help' output, as per
8987         Francois Pinard's suggestions.
8988
8989         * main.c: Include locale.h; call setlocale(), bindtextdomain() and 
8990         textdomain().
8991
8992         * config.h.in: Define stubs for I18N3.
8993
8994         * wget.h: Include libintl.h.
8995
8996 1998-01-28  Hrvoje Niksic  <hniksic@srce.hr>
8997
8998         * url.c (mkstruct): Check for opt.cut_dirs.
8999         (mkstruct): alloca()-te more, xmalloc() less.
9000
9001         * utils.c (load_file): Check for ferror().
9002
9003         * url.c (get_urls_file): Close only the files we opened.
9004         (get_urls_html): Ditto.
9005         (count_slashes): New function.
9006
9007         * http.h: Removed.
9008
9009         * http.c (gethttp): Respect username and password provided by
9010         proxy URL.
9011         (base64_encode_line): Write into an existing buffer instead of
9012         malloc-ing a new one.
9013         (struct http_stat): Moved from http.h
9014
9015         * retr.c (retrieve_url): Free SUF.
9016
9017         * all: Removed lots of unnecessary .h dependencies.
9018
9019         * html.c (global_state): Made static.
9020
9021         * utils.h (ALLOCA_ARRAY): New macro.
9022
9023         * main.c (main): New option `--cut-dirs'.
9024
9025         * url.c (construct): Use alloca() for T.
9026
9027         * utils.c (mkdirhier): Use STRDUP_ALLOCA.
9028
9029         * host.c (_host_t): Moved from host.h.
9030         (struct host): Renamed from _host_t.
9031         (store_hostaddress): Use STRDUP_ALLOCA for INET_S.
9032         (realhost): Ditto.
9033
9034         * host.h: Don't include url.h.
9035
9036         * ftp.c (LIST_FILENAME): Moved from ftp.h.
9037
9038         * init.c (DEFAULT_FTP_ACCT): Moved from ftp.h.
9039
9040         * main.c (main): Enable log if the output goes to a TTY.
9041
9042         * connect.h: Removed unused constant `BACKLOG'.
9043
9044         * config.h.in: Check for isatty().
9045
9046         * Makefile.in (LINK): Use CFLAGS when linking.
9047
9048 1998-01-27  Hrvoje Niksic  <hniksic@srce.hr>
9049
9050         * mswindows.c (ws_hangup): Use redirect_output().
9051
9052         * main.c (redirect_output_signal): New function; use
9053         redirect_output().
9054
9055         * log.c (redirect_output): New function, based on hangup(), which
9056         is deleted.
9057
9058         * log.c (vlogmsg): New function.
9059
9060         * wget.h (DEBUGP): Use debug_logmsg().
9061
9062         * main.c (hangup): Use it.
9063
9064         * log.c (log_dump): New function.
9065
9066         * utils.h (DO_REALLOC): Use `long' for various sizes.
9067
9068         * http.c (hskip_lws): Use `while', for clarity.
9069         (HTTP_DYNAMIC_LINE_BUFFER): New constant.
9070         (fetch_next_header): Use it instead of DYNAMIC_LINE_BUFFER.
9071
9072         * ftp-basic.c (FTP_DYNAMIC_LINE_BUFFER): New constant.
9073         (ftp_response): Use it instead of DYNAMIC_LINE_BUFFER.
9074
9075         * utils.c (DYNAMIC_LINE_BUFFER): Moved from utils.c.
9076         (LEGIBLE_SEPARATOR): Ditto.
9077         (FILE_BUFFER_SIZE): Ditto.
9078
9079         * retr.c (BUFFER_SIZE): Moved from retr.h.
9080
9081         * log.c: New file.
9082         (logmsg): Moved from utils.c.
9083         (debug_logmsg): New function.
9084
9085         * mswindows.h: Include it here.
9086
9087         * init.c: Ditto.
9088
9089         * utils.c: Don't include <windows.h>.
9090
9091 1998-01-25  Hrvoje Niksic  <hniksic@srce.hr>
9092
9093         * host.c (ftp_getaddress): Ditto.
9094
9095         * main.c (main): Use it.
9096
9097         * utils.h (STRDUP_ALLOCA): New macro.
9098
9099         * init.c: Prepend `wget: ' to error messages printed on stderr.
9100
9101         * utils.c (mkdirhier): Renamed from mymkdir.
9102         (touch): Renamed from my_touch.
9103         (pwd_cuserid): Renamed from my_cuserid().
9104
9105 1998-01-24  Andy Eskilsson  <andy.eskilsson@telelogic.se>
9106
9107         * utils.c (accdir): Process wildcards.
9108         (proclist): New function.
9109         (accdir): Use it to avoid code repetition.
9110
9111 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
9112
9113         * recur.c (parse_robots): Respect opt.useragent; use alloca().
9114
9115         * http.c (gethttp): Construct useragent accordingly.
9116
9117         * version.c: Changed version string to numbers-only.
9118
9119         * main.c (print_help): List all the options.
9120
9121         * mswindows.c (windows_main_junk): Initialize argv0 here.
9122
9123 1998-01-24  Karl Heuer  <kwzh@gnu.org>
9124
9125         * netrc.c (search_netrc): Initialize `l' only after processing
9126         netrc.
9127
9128         * main.c (main): Don't trap SIGHUP if it's being ignored.
9129
9130 1998-01-24  Hrvoje Niksic  <hniksic@srce.hr>
9131
9132         * all: Use logmsg().
9133
9134         * utils.c (time_str): Moved from retr.c.
9135         (logmsg): New function.
9136         (logmsg_noflush): Ditto.
9137
9138         * rbuf.c: New file, moved buf_* functions here.
9139
9140         * ftp.c (ftp_expected_bytes): Moved from ftp-basic.c.
9141
9142         * ftp-basic.c (ftp_rest): Use prnum().
9143
9144         * ftp-basic.c: Ditto.
9145
9146         * ftp.c: Use the new reading functions and macros.
9147
9148         * retr.c (buf_initialize): New function.
9149         (buf_initialized_p): Ditto.
9150         (buf_uninitialize): Ditto.
9151         (buf_fd): Ditto.
9152
9153         * http.c (fetch_next_header): Use the BUF_READCHAR macro for
9154         efficiency.
9155         (gethttp): Use alloca() where appropriate.
9156
9157         * retr.c (buf_readchar): Use it.
9158         (buf_peek): Use rstreams.
9159
9160         * retr.h (BUF_READCHAR): New macro.
9161
9162         * init.c (home_dir): Rewritten for clarity.
9163         (init_path): Ditto.
9164
9165         * mswindows.c (ws_backgnd): Made static.
9166         (read_registry): Ditto.
9167         (ws_cleanup): Ditto.
9168         (ws_handler): Ditto.
9169
9170 1998-01-23  Hrvoje Niksic  <hniksic@srce.hr>
9171
9172         * alloca.c: New file.
9173
9174         * Makefile.in (ALLOCA): Define.
9175
9176         * mswindows.c (ws_help): Constify.
9177         (ws_help): Use alloca.
9178
9179         * mswindows.c: Reformat.
9180
9181         * all: Added _(...) annotations for I18N snarfing and translation.
9182
9183         * host.c (ftp_getaddress): Nuke SYSINFO.
9184         (ftp_getaddress): Don't use getdomainname().
9185         (ftp_getaddress): Use uname(), where available.
9186
9187         * http.c (gethttp): Protect a stray fprintf().
9188
9189         * init.c (settime): New function.
9190         (setval): Treat WAIT specially, allowing suffixes like `m' for
9191         minutes, etc.
9192
9193 1998-01-21  Hrvoje Niksic  <hniksic@srce.hr>
9194
9195         * url.c (get_urls_html): Use alloca() for TEMP.
9196
9197 1998-01-21  Jordan Mendelson  <jordy@wserv.com>
9198
9199         * url.c (rotate_backups): New function.
9200
9201         * http.c (gethttp): Ditto.
9202
9203         * ftp.c (getftp): Rotate backups.
9204
9205 1997-12-18  Hrvoje Niksic  <hniksic@srce.hr>
9206
9207         * all: Renamed nmalloc(), nrealloc() and nstrdup() to xmalloc(),
9208         xrealloc() and xstrdup().  Use the new functions.
9209
9210         * url.c (decode_string): Made static.
9211         (has_proto): Ditto.
9212         (parse_dir): Ditto.
9213         (parse_uname): Ditto.
9214         (mkstruct): Ditto.
9215         (construct): Ditto.
9216         (construct_relative): Ditto.
9217
9218         * retr.c (show_progress): Made static.
9219
9220         * recur.c (robots_url): Made static.
9221         (retrieve_robots): Ditto.
9222         (parse_robots): Ditto.
9223         (robots_match): Ditto.
9224
9225         * main.h: Removed.
9226
9227         * main.c (printhelp): Made static.
9228         (hangup): Ditto.
9229
9230         * init.c (comind): Made static.
9231         (defaults): Ditto.
9232         (init_path): Ditto.
9233         (run_wgetrc): Ditto.
9234         (onoff): Ditto.
9235         (setonoff): Ditto.
9236         (setnum): Ditto.
9237         (myatoi): Ditto.
9238         (getperms): Ditto.
9239         (setbytes): Ditto.
9240
9241         * http.c (fetch_next_header): Made static.
9242         (hparsestatline): Ditto.
9243         (hskip_lws): Ditto.
9244         (hgetlen): Ditto.
9245         (hgetrange): Ditto.
9246         (hgettype): Ditto.
9247         (hgetlocation): Ditto.
9248         (hgetmodified): Ditto.
9249         (haccepts_none): Ditto.
9250         (gethttp): Ditto.
9251         (base64_encode_line): Ditto.
9252         (mktime_from_utc): Ditto.
9253         (http_atotm): Ditto.
9254
9255         * html.c (idmatch): Made static.
9256
9257         * host.c (search_host): Made static.
9258         (search_address): Ditto.
9259         (free_hlist): Ditto.
9260
9261         * ftp.c (getftp): Made static.
9262         (ftp_loop_internal): Ditto.
9263         (ftp_get_listing): Ditto.
9264         (ftp_retrieve_list): Ditto.
9265         (ftp_retrieve_dirs): Ditto.
9266         (ftp_retrieve_glob): Ditto.
9267         (freefileinfo): Ditto.
9268         (delelement): Ditto.
9269
9270         * ftp-ls.c (symperms): Made static.
9271         (ftp_parse_unix_ls): Ditto.
9272
9273         * connect.c (select_fd): Made static.
9274
9275         * utils.c (xmalloc): Renamed from nmalloc.
9276         (xrealloc): Renamed from nrealloc.
9277         (xstrdup): Renamed from nstrdup.
9278
9279         * getopt.c (exchange): Use alloca.
9280
9281         * mswindows.c (mycuserid): Use strncpy.
9282
9283         * New files mswindows.c, mswindows.h, sysdep.h.  winjunk.c,
9284         systhings.h, windecl.h and winjunk.h removed.
9285
9286         * mswindows.c (sleep): New function.
9287
9288         * utils.c: Include <windows.h> under Windows.
9289
9290 1997-06-12  Darko Budor  <dbudor@zesoi.fer.hr>
9291
9292         * url.h (URL_UNSAFE): Change default under Windows.
9293
9294         * retr.c (retrieve_from_file): Respect opt.delete_after.
9295
9296         * main.c (main): Call ws_help on Windows.
9297
9298         * winjunk.c (windows_main_junk): New function.
9299
9300         * main.c (main): Junk-process argv[0].
9301
9302         * http.c (mktime_from_utc): Return -1 if mktime failed.
9303
9304         * http.c (http_loop): Ditto.
9305
9306         * ftp.c (ftp_loop_internal): Change title on Windows when using a
9307         new URL.
9308
9309         * winjunk.c (getdomainname): Lots of functions.
9310
9311 1997-06-12  Hrvoje Niksic  <hniksic@srce.hr>
9312
9313         * cmpt.c (strptime_internal): Handle years more correctly for
9314         `%y'.
9315
9316 1997-06-09  Mike Thomas <mthomas@reality.ctron.com>
9317
9318         * http.c (gethttp): Allocate enough space for
9319         `Proxy-Authorization' header.
9320
9321 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
9322
9323         * version.c: Wget/1.4.5 is released.
9324
9325 1997-05-10  Hrvoje Niksic  <hniksic@srce.hr>
9326
9327         * retr.c (get_contents): Check return value of fwrite more
9328         carefully.
9329
9330 1997-03-30  Andreas Schwab  <schwab@issan.informatik.uni-dortmund.de>
9331
9332         * cmpt.c (strptime_internal) [case 'Y']: Always subtract 1900 from
9333         year, regardless of century.
9334
9335 1997-03-30  Hrvoje Niksic  <hniksic@srce.hr>
9336
9337         * utils.c (isfile): Use `lstat' instead of `stat'.
9338
9339 1997-03-29  Hrvoje Niksic  <hniksic@srce.hr>
9340
9341         * utils.c (numdigit): Use explicit test.
9342
9343 1997-03-21  Hrvoje Niksic  <hniksic@srce.hr>
9344
9345         * http.c (http_loop): Always use `url_filename' to get u->local.
9346
9347 1997-03-20  Hrvoje Niksic  <hniksic@srce.hr>
9348
9349         * url.c: Recognize https.
9350
9351 1997-03-13  Hrvoje Niksic  <hniksic@srce.hr>
9352
9353         * recur.c (recursive_retrieve): Lowercase just the host name.
9354
9355 1997-03-09  Hrvoje Niksic  <hniksic@srce.hr>
9356
9357         * url.c (get_urls_file): Use the correct test.
9358         (get_urls_html): Ditto.
9359
9360 1997-03-07  Hrvoje Niksic  <hniksic@srce.hr>
9361
9362         * connect.c: Reverted addrlen to int.
9363
9364         * init.c (parse_line): Check for -1 instead of NONE.
9365
9366         * version.c: Changed version to 1.4.5.
9367
9368 1997-02-17  Hrvoje Niksic  <hniksic@srce.hr>
9369
9370         * init.c: New option netrc.
9371         (initialize): Don't parse .netrc.
9372
9373         * cmpt.c (recursive): Return rp.
9374         (strptime_internal): Match the long strings first, the abbreviated
9375         second.
9376
9377 1997-02-16  Hrvoje Niksic  <hniksic@srce.hr>
9378
9379         * http.c (check_end): New function.
9380         (http_atotm): Use it.
9381
9382 1997-02-13  gilles Cedoc  <gilles@cedocar.fr>
9383
9384         * http.c (gethttp): Use them.
9385
9386         * init.c: New options proxy_user and proxy_passwd.
9387
9388 1997-02-14  Hrvoje Niksic  <hniksic@srce.hr>
9389
9390         * ftp.c (ftp_retrieve_list): Create links even if not relative.
9391
9392 1997-02-10  Hrvoje Niksic  <hniksic@srce.hr>
9393
9394         * recur.c (recursive_retrieve): Lowercase the host name, if the
9395         URL is not "optimized".
9396
9397         * host.c (realhost): Return l->hostname, even if it matches with
9398         host.
9399
9400 1997-02-10  Marin Purgar  <pmc@asgard.hr>
9401
9402         * connect.c: Make addrlen size_t instead of int.
9403         (conaddr): Ditto.
9404
9405 1997-02-09  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
9406
9407         * systhings.h: Define S_ISLNK on NeXT too.
9408
9409 1997-02-09  Hrvoje Niksic  <hniksic@srce.hr>
9410
9411         * version.c: Released 1.4.3.
9412
9413         * url.c: Futher update to list of protostrings.
9414         (skip_proto): Skip `//' correctly for FTP and HTTP.
9415
9416         * url.c (get_urls_html): Handle bogus `http:' things a little
9417         different.
9418
9419         * main.c (main): Removed `follow-ftp' from `f'.
9420         (main): Dumped the `prefix-files' and `file-prefix' options and
9421         features; old and bogus.
9422         (main): Exit on failed setval() in `-e'.
9423
9424         * http.c (fetch_next_header): Use it to detect header continuation
9425         correctly.
9426
9427         * retr.c (buf_peek): New function.
9428
9429 1997-02-08  Hrvoje Niksic  <hniksic@srce.hr>
9430
9431         * wget.h: Include time.h and stuff.
9432
9433 1997-02-08  Roger Beeman  <beeman@cisco.com>
9434
9435         * ftp.c: Include <time.h>
9436
9437 1997-02-07  Hrvoje Niksic  <hniksic@srce.hr>
9438
9439         * url.c (findurl): Would read over buffer limits.
9440
9441 1997-02-06  Hrvoje Niksic  <hniksic@srce.hr>
9442
9443         * ftp-ls.c (ftp_parse_unix_ls): Allow spaces in file names.
9444
9445 1997-02-05  Hrvoje Niksic  <hniksic@srce.hr>
9446
9447         * http.c (http_atotm): Initialize tm.is_dst.
9448
9449 1997-02-02  Hrvoje Niksic  <hniksic@srce.hr>
9450
9451         * http.c (gethttp): Don't print the number of retrieved headers.
9452
9453         * main.c (main): New option `--no-clobber', alias for `-nc'.
9454
9455         * url.c: Recognize `https://'.
9456
9457 1997-02-01  Hrvoje Niksic  <hniksic@srce.hr>
9458
9459         * host.c (herrmsg): Don't use h_errno.
9460
9461 1997-01-30  Hrvoje Niksic  <hniksic@srce.hr>
9462
9463         * host.c (accept_domain): Use it.
9464
9465         * main.c (main): New option `--exclude-domains'.
9466
9467         * retr.c (retrieve_url): Use it.
9468         (retrieve_url): Bail out when an URL is redirecting to itself.
9469
9470         * url.c (url_equal): New function.
9471
9472 1997-01-29  Hrvoje Niksic  <hniksic@srce.hr>
9473
9474         * connect.c: Include arpa/inet.h instead of arpa/nameser.h.
9475
9476         * http.c (mk_utc_time): New function.
9477         (http_atotm): Use it; handle time zones correctly.
9478
9479 1997-01-28  Hrvoje Niksic  <hniksic@srce.hr>
9480
9481         * http.c: Ditto.
9482
9483         * ftp-basic.c: Use it instead of WRITE.
9484
9485         * connect.c (iwrite): New function.
9486
9487 1997-01-27  Hrvoje Niksic  <hniksic@srce.hr>
9488
9489         * cmpt.c (mktime): New function.
9490
9491         * netrc.c: Include <sys/types.h>.
9492
9493         * main.c (main): Wouldn't recognize --spider.
9494
9495         * retr.c (rate): Use `B', `KB' and `MB'.
9496         (reset_timer,elapsed_time): Moved from utils.c.
9497
9498         * ftp.c (ftp_retrieve_list): Ditto.
9499
9500         * http.c (http_loop): Don't touch the file if opt.dfp.
9501
9502 1997-01-24  Hrvoje Niksic  <hniksic@srce.hr>
9503
9504         * cmpt.c: New file.
9505
9506         * ftp.c (ftp_retrieve_glob): New argument semantics.
9507         (ftp_retrieve_dirs): Use it.
9508         (ftp_loop): Ditto.
9509
9510         * html.c (htmlfindurl): Recognize `'' as the quote char.
9511
9512 1997-01-23  Hrvoje Niksic  <hniksic@srce.hr>
9513
9514         * ftp.c (ftp_loop_internal): Use it.
9515
9516         * utils.c (remove_link): New function.
9517
9518 1997-01-22  Hrvoje Niksic  <hniksic@srce.hr>
9519
9520         * retr.c (retrieve_url): Require STRICT redirection URL.
9521
9522         * url.c (parseurl): New argument STRICT.
9523
9524         * http.c (hparsestatline): Be a little-bit less strict about
9525         status line format.
9526
9527 1997-01-21  Hrvoje Niksic  <hniksic@srce.hr>
9528
9529         * http.c (gethttp): Use it.
9530
9531         * main.c (main): Don't use '<digit>' as options.
9532
9533         * init.c: New option ignore_length.
9534
9535         * http.c (gethttp): Ditto.
9536         (http_loop): Check for redirection without Location:.
9537         (gethttp): Don't print Length unless RETROKF.
9538
9539         * ftp.c (getftp): Use it.
9540
9541         * url.c (mkalldirs): New function.
9542
9543         * utils.c (mymkdir): Don't check for existing non-directory.
9544
9545         * url.c (mkstruct): Don't create the directory.
9546
9547 1997-01-20  Hrvoje Niksic  <hniksic@srce.hr>
9548
9549         * init.c (setval): Removed NO_RECURSION checks.
9550
9551 1997-01-19  Hrvoje Niksic  <hniksic@srce.hr>
9552
9553         * version.c: "Released" 1.4.3-pre2.
9554
9555         * recur.c (recursive_retrieve): Bypass host checking only if URL
9556         is ftp AND parent URL is not ftp.
9557
9558         * ftp-basic.c (ftp_request): Print out Turtle Power.
9559
9560         * ftp.c (ftp_loop): Call ftp_retrieve_glob with 0 if there's no
9561         wildcard.
9562         (ftp_retrieve_glob): Call ftp_loop_internal even on empty list, if
9563         not glob.
9564
9565         * http.c (gethttp): Be a little bit smarter about status codes.
9566
9567         * recur.c (recursive_retrieve): Always reset opt.recursive when
9568         dealing with FTP.
9569
9570 1997-01-18  Hrvoje Niksic  <hniksic@srce.hr>
9571
9572         * retr.c (retrieve_url): New variable location_changed; use it for
9573         tests instead of mynewloc.
9574         (retrieve_url): Allow heuristic adding of html.
9575
9576         * url.c (url_filename): Don't use the `%' in Windows file names.
9577
9578         * http.c (http_loop): Always time-stamp the local file.
9579
9580         * http.c (http_loop): Ditto.
9581
9582         * ftp.c (ftp_retrieve_list): Use it.
9583
9584         * utils.c (my_touch): New function.
9585
9586         * ftp.c (ftp_retrieve_list): Use #ifdef HAVE_STRUCT_UTIMBUF
9587         instead of #ifndef NeXT.
9588
9589         * utils.c (strptime): New version, by Ulrich Drepper.
9590
9591 1997-01-17  Hrvoje Niksic  <hniksic@srce.hr>
9592
9593         * http.c (haccepts_none): Renamed from `haccepts_bytes'.
9594         (gethttp): If haccepts_none(), disable ACCEPTRANGES.
9595         (http_loop): Would remove ACCEPTRANGES.
9596
9597         * ftp.c (getftp): Call ftp_list with NULL.
9598
9599 1997-01-15  Hrvoje Niksic  <hniksic@srce.hr>
9600
9601         * html.c (ftp_index): Don't print minutes and seconds if we don't
9602         know them; beautify the output.
9603
9604         * ftp.c (getftp): Don't close the socket on FTPNSFOD.
9605
9606 1997-01-14  Hrvoje Niksic  <hniksic@srce.hr>
9607
9608         * utils.c (strptime): New function.
9609         (strptime): Don't use get_alt_number.
9610         (strptime): Don't use locale.
9611         (match_string): Made it a function.
9612
9613 1997-01-12  Hrvoje Niksic  <hniksic@srce.hr>
9614
9615         * http.c (http_atotm): New function.
9616         (http_loop): Use it.
9617
9618         * atotm.c: Removed from the distribution.
9619
9620         * http.c (base64_encode_line): Rewrite.
9621
9622 1997-01-09  Hrvoje Niksic  <hniksic@srce.hr>
9623
9624         * ftp.c (getftp): Use ftp_expected_bytes; print size.
9625
9626         * ftp-basic.c (ftp_response): Use ftp_last_respline.
9627         (ftp_expected_bytes): New function.
9628
9629         * ftp.c (getftp): Print the unauthoritative file length.
9630
9631         * ftp-ls.c: Renamed from ftp-unix.c.
9632         (ftp_parse_ls): Moved from ftp.c.
9633         (ftp_parse_unix_ls): Recognize seconds in time spec.
9634         (ftp_parse_unix_ls): Recognize year-less dates of the previous
9635         year.
9636
9637 1997-01-08  Hrvoje Niksic  <hniksic@srce.hr>
9638
9639         * ftp-basic.c: Don't declare errno if #defined.
9640
9641         * host.c (ftp_getaddress): Check for sysinfo legally.
9642
9643 1997-01-08  Darko Budor  <dbudor@diana.zems.fer.hr>
9644
9645         * connect.c (iread): Use READ.
9646
9647 1996-12-23  Hrvoje Niksic  <hniksic@srce.hr>
9648
9649         * url.c: Recognize finger, rlogin, tn3270, mid and cid as valid
9650         schemes.
9651
9652 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
9653
9654         * host.c (ftp_getaddress): Allow `.' in hostname.
9655
9656 1996-12-26  Darko Budor <dbudor@zems.fer.hr>
9657
9658         * wget.h: READ and WRITE macros for use instead of read and write
9659         on sockets, grep READ *.c, grep WRITE *.c
9660
9661         * wsstartup.c: new file - startup for winsock
9662
9663         * wsstartup.h: new file
9664
9665         * win32decl.h: new file - fixup for <errno.h> and winsock trouble
9666
9667         * configure.bat: Configure utility for MSVC
9668
9669         * src/Makefile.ms,config.h.ms: new files for use with MSVC 4.x
9670
9671 1996-12-22  Hrvoje Niksic  <hniksic@srce.hr>
9672
9673         * version.c: Released 1.4.3-pre.
9674
9675         * utils.c (prnum): Accept long.
9676         (legible): Use prnum().
9677
9678         * connect.c (make_connection): Accept port as short.
9679         (bindport): Ditto.
9680
9681         * http.c (gethttp): Use search_netrc.
9682
9683 1996-12-21  Hrvoje Niksic  <hniksic@srce.hr>
9684
9685         * ftp.c (getftp): Use search_netrc.
9686
9687         * netrc.c (free_netrc): New function.
9688
9689         * init.c (home_dir): New function.
9690
9691         * url.c (convert_links): Allow REL2ABS changes.
9692
9693 1996-12-21  Gordon Matzigkeit  <gord@gnu.ai.mit.edu>
9694
9695         * netrc.c: New file.
9696         (parse_netrc, maybe_add_to_list): New functions.
9697
9698 1996-12-17  Hrvoje Niksic  <hniksic@srce.hr>
9699
9700         * retr.c (retrieve_url): Reset opt.recursion before calling
9701         ftp_loop if it is reached through newloc.
9702
9703         * init.c (run_wgetrc): Print the wgetrc path too, when reporting
9704         error; don't use "Syntax error", since we don't know if it is
9705         really a syntax error.
9706
9707 1996-12-16  Hrvoje Niksic  <hniksic@srce.hr>
9708
9709         * utils.c (acceptable): Extract the filename part of the path.
9710
9711         * recur.c (recursive_retrieve): Call acceptable() with the right
9712         argument; would bug out on wildcards.
9713
9714         * init.c (parse_line): Likewise.
9715
9716         * html.c (htmlfindurl): Cast to char * when calling stuff.
9717
9718 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
9719
9720         * ftp.c (getftp): Use ftp_pasv.
9721
9722         * ftp-basic.c (ftp_request): Accept NULL value.
9723         (ftp_pasv): New function.
9724
9725         * options.h (struct options): Add passive FTP option.
9726
9727 1996-12-15  Hrvoje Niksic  <hniksic@srce.hr>
9728
9729         * url.c (parseurl): Debug output.
9730
9731         * utils.c (path_simplify): New one, adapted from bash's
9732         canonicalize_pathname().
9733
9734 1996-12-14  Hrvoje Niksic  <hniksic@srce.hr>
9735
9736         * ftp.c (getftp): Don't discard the buffer.
9737
9738         * retr.c (get_contents): New parameter nobuf.
9739
9740 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
9741
9742         * html.c (htmlfindurl): Recognize <meta contents="d; URL=...".
9743
9744         * init.c (setval): Strip the trailing slashes on CVECDIR.
9745
9746 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
9747
9748         * init.c: Make excludes and includes under CVECDIR instead of
9749         CVEC.
9750
9751 1996-12-13  Shawn McHorse  <riffraff@txdirect.net>
9752
9753         * url.c (get_urls_html): Skip "http:".
9754
9755 1996-12-13  Hrvoje Niksic  <hniksic@srce.hr>
9756
9757         * utils.c (strcasecmp): From glibc.
9758         (strncasecmp): Also.
9759         (strstr): Also.
9760
9761         * url.c: Added javascript: to the list of URLs prefixes.
9762
9763 1996-12-12  Shawn McHorse  <riffraff@txdirect.net>
9764
9765         * recur.c (retrieve_robots): Print the warning message only if
9766         verbose.
9767
9768 1996-12-12  Gregor Hoffleit  <flight@mathi.uni-heidelberg.DE>
9769
9770         * ftp.c (ftp_retrieve_list): Use NeXT old utime interface.
9771
9772 1996-12-12  Hrvoje Niksic  <hniksic@srce.hr>
9773
9774         * systhings.h: New file.
9775
9776         * ../configure.in: Check for utime.h
9777
9778         * ftp.c: Check whether we have unistd.h.
9779
9780 1996-11-27  Hrvoje Niksic  <hniksic@srce.hr>
9781
9782         * recur.c (recursive_retrieve): Send the canonical URL as referer.
9783         (recursive_retrieve): Call get_urls_html with the canonical URL.
9784
9785 1996-12-13  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
9786
9787         * (configure.in, config.h.in, src/Makefile.in, src/*.[ch]): Add
9788         ansi2knr support for compilers which don't support ANSI style
9789         function prototypes and signatures.
9790
9791         * (aclocal.m4, src/ansi2knr.c, src/ansi2knr.1): New files.
9792
9793 1996-11-26  Hrvoje Niksic  <hniksic@srce.hr>
9794
9795         * url.c: Use it; Recognize paths ending with "." and ".." as
9796         directories.
9797         (url_filename): Append .n whenever file exists and could be a
9798         directory.
9799
9800         * url.h (ISDDOT): New macro.
9801
9802         * init.c (parse_line): Use unsigned char.
9803
9804         * url.c (get_urls_html): Cast to unsigned char * when calling
9805         htmlfindurl.
9806
9807         * html.c (htmlfindurl): Use unsigned char.
9808
9809         * version.c: Changed version to 1.4.3.
9810
9811 1996-11-25  Hrvoje Niksic  <hniksic@srce.hr>
9812
9813         * version.c: Released 1.4.2.
9814
9815         * ftp.c (getftp): Simplified assertion.
9816         (ftp_loop_internal): Remove symlink before downloading.
9817         (ftp_retrieve_list): Unlink the symlink name before attempting to
9818         create a symlink!
9819
9820         * options.h (struct options): Renamed print_server_response to
9821         server_response.
9822
9823         * ftp.c (rel_constr): Removed.
9824         (ftp_retrieve_list): Don't use it.
9825         (ftp_retrieve_list): Use opt.retr_symlinks.
9826
9827 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
9828
9829         * main.c (main): New option retr_symlinks.
9830
9831         * url.c (convert_links): Print verbose message.
9832
9833 1996-11-24  Hrvoje Niksic  <hniksic@srce.hr>
9834
9835         * http.c (http_loop): Reset newloc in the beginning of function;
9836         would cause FMR in retrieve_url.
9837
9838 1996-11-23  Hrvoje Niksic  <hniksic@srce.hr>
9839
9840         * recur.c (convert_all_links): Find the URL of each HTML document,
9841         and feed it to get_urls_html; would bug out.
9842         (convert_all_links): Check for l2 instead of dl; removed dl.
9843
9844         * url.c (convert_links): Don't refer to freed newname.
9845
9846         * recur.c (recursive_retrieve): Add this_url to urls_downloaded.
9847
9848         * main.c (main): Print the OS_TYPE in the debug output, too.
9849
9850         * recur.c (recursive_retrieve): Check for opt.delete_after.
9851
9852         * main.c (main): New option delete-after.
9853
9854         * init.c (setval): Cleaned up.
9855
9856 1996-11-21  Hrvoje Niksic  <hniksic@srce.hr>
9857
9858         * Makefile.in (wget): Make `wget' the default target.
9859
9860         * ftp.c (ftp_loop_internal): Move noclobber checking out of the
9861         loop.
9862         (ftp_retrieve_list): Warn about non-matching sizes.
9863
9864         * http.c (http_loop): Made -nc non-dependent on opt.recursive.
9865
9866         * init.c (setnum): Renamed from setnuminf; New argument flags.
9867         (setval): Use it.
9868
9869         * main.c (main): Sorted the options.
9870         (main): New option --wait.
9871
9872 1996-11-21  Shawn McHorse  <riffraff@txdirect.net>
9873
9874         * html.c (htmlfindurl): Reset s->in_quote after getting out of
9875         quotes.
9876
9877 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
9878
9879         * version.c: Changed version to 1.4.2.
9880
9881 1996-11-20  Hrvoje Niksic  <hniksic@srce.hr>
9882
9883         * version.c: Released 1.4.1.
9884
9885         * html.c (html_quote_string): New function.
9886         (ftp_index): Use it.
9887         (htmlfindurl): A more gentle ending debug message.
9888
9889         * ftp.c (ftp_loop): Check for opt.htmlify.
9890
9891         * init.c: New command htmlify.
9892
9893         * ftp.c (getftp): Nicer error messages, with `'-encapsulated
9894         strings.
9895         (ftp_loop): Print size of index.html.
9896
9897         * init.c (setval): Implement "styles".
9898
9899         * main.c (main): New option dotstyle.
9900
9901 1996-11-19  Hrvoje Niksic  <hniksic@srce.hr>
9902
9903         * ftp.c (getftp): Close the master socket in case of errors, after
9904         bindport().
9905
9906         * connect.c (bindport): Initialize msock to -1.
9907
9908         * ftp.c (getftp): Initialize dtsock to -1.
9909
9910         * connect.c (closeport): Don't close sock if sock == -1.
9911
9912 1996-11-18  Hrvoje Niksic  <hniksic@srce.hr>
9913
9914         * init.c (setnuminf): Nuked default value -- just leave unchanged.
9915         (setval): Don't send default values.
9916         (defaults): Use DEFAULT_TIMEOUT -- aaargh.
9917
9918         * options.h (struct options): Use long for dot_bytes.
9919
9920         * init.c (setquota): Renamed to setbytes.
9921         (setval): Use setbytes on DOTBYTES.
9922
9923 1996-11-17  Hrvoje Niksic  <hniksic@srce.hr>
9924
9925         * ftp.c (getftp): Initialize con->dltime.
9926
9927         * recur.c (recursive_retrieve): Use same_host instead of
9928         try_robots; simply load robots_txt whenever the host is changed.
9929         (recursive_retrieve): Free forbidden before calling parse_robots.
9930
9931 1996-11-16  Hrvoje Niksic  <hniksic@srce.hr>
9932
9933         * retr.c (show_progress): Use them.
9934
9935         * options.h (struct options): New options dot_bytes, dots_on_line
9936         and dot_spacing.
9937
9938 1996-11-16  Mark Boyns  <boyns@sdsu.edu>
9939
9940         * recur.c (recursive_retrieve): Retrieve directories regardless of
9941         acc/rej rules; check for empty u->file.
9942
9943 1996-11-14  Hrvoje Niksic  <hniksic@srce.hr>
9944
9945         * init.c (setval): Use it.
9946
9947         * utils.c (merge_vecs): New function.
9948
9949         * init.c (setval): Reset the list-type functions when encountering
9950         "".
9951
9952 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
9953
9954         * recur.c (recursive_retrieve): Use base_url instead of this_url
9955         for no_parent.
9956
9957 1996-11-14  Shawn McHorse  <riffraff@txdirect.net>
9958
9959         * html.c (htmlfindurl): Reset s->in_quote after exiting the quote.
9960
9961 1996-11-13  Hrvoje Niksic  <hniksic@srce.hr>
9962
9963         * utils.c (sepstring): Rewrote; don't use strtok.
9964
9965         * recur.c (recursive_retrieve): Enter assorted this_url to slist
9966         when running the first time.
9967         (retrieve_robots): Warn to ignore errors when robots are loaded.
9968
9969         * utils.c (load_file): Moved from url.c.
9970
9971         * http.c: Made static variables const too in h* functions.
9972
9973         * main.c (main): Renamed --continue-ftp to --continue.
9974
9975         * recur.c (recursive_retrieve): Use it.
9976
9977         * utils.c (frontcmp): New function.
9978
9979         * url.c (accdir): New function.
9980
9981         * html.c (htmlfindurl): Recognize <area href=...>.
9982
9983         * ftp.c (ftp_retrieve_dirs): Implemented opt.includes.
9984
9985         * init.c (setval): Free the existing opt.excludes and
9986         opt.includes, if available.
9987
9988         * main.c (main): New option -I.
9989
9990 1996-11-12  Hrvoje Niksic  <hniksic@srce.hr>
9991
9992         * ftp.c (ftp_retrieve_glob): Do not weed out directories.
9993
9994         * version.c: Changed version to 1.4.1.
9995
9996 1996-11-11  Hrvoje Niksic  <hniksic@srce.hr>
9997
9998         * version.c: Released 1.4.0.
9999
10000 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
10001
10002         * main.c (main): Free com and val after parse_line.
10003         (printhelp): Reorder the listing.
10004
10005         * http.c: More robust header parsing.
10006
10007         * http.c: Allow any number of spaces, or no spaces, precede ':'.
10008         (hskip_lws): New function.
10009         (haccepts_bytes): New function.
10010         (gethttp): Use it.
10011
10012         * init.c (setval): Check header sanity.
10013         (setval): Allow resetting of headers.
10014
10015 1996-11-10  Hrvoje Niksic  <hniksic@srce.hr>
10016
10017         * http.c (http_loop): Don't use has_wildcards.
10018
10019         * http.c (gethttp): Free all_headers -- would leak.
10020
10021         * recur.c (recursive_retrieve): Initialize depth to 1 instead of
10022         0 -- this fixes a long-standing bug in -rl.
10023
10024 1996-11-09  Hrvoje Niksic  <hniksic@srce.hr>
10025
10026         * ftp.c: Use -1 as "impossible" value for con->fd.
10027
10028         * url.h (URL_SEPARATOR): Don't treat `*' and `+' as separators.
10029
10030         * init.c (parse_line): Use isalpha.
10031
10032         * ftp-unix.c: Use HAVE_UNISTD_H.
10033
10034         * mtch.c (has_wildcards): Don't match \.
10035
10036         * http.c (http_loop): Warn on HTTP wildcard usage.
10037
10038 1996-11-08  Hrvoje Niksic  <hniksic@srce.hr>
10039
10040         * url.c (url_filename): Do not create numbered suffixes if
10041         opt.noclobber -- would bug out on -nc.
10042
10043 1996-11-07  Hrvoje Niksic  <hniksic@srce.hr>
10044
10045         * recur.c (parse_robots): Don't chuck out the commands without
10046         arguments (`Disallow:<empty>' didn't work).
10047         (parse_robots): Compare versions lowercase.
10048         (parse_robots): Match on base_version, not version_string!
10049         (parse_robots): Handle comments properly.
10050         (parse_robots): Match versions in a sane way.
10051
10052         * init.c: Print nicer error messages.
10053
10054         * version.c: Changed version to 1.4.0.
10055
10056 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
10057
10058         * version.c: Released 1.4.0-test2.
10059
10060         * init.c (run_wgetrc): Close fp.
10061
10062         * ftp.c (ftp_retrieve_dirs): Allocate the correct length for
10063         u->dir.
10064
10065 1996-11-06  Hrvoje Niksic  <hniksic@srce.hr>
10066
10067         * init.c (setquota): Allow inf as quota specification.
10068
10069 1996-11-05  Hrvoje Niksic  <hniksic@srce.hr>
10070
10071         * ftp.c (ftp_retrieve_dirs): Return QUOTEXC if quota exceeded.
10072         (ftp_retrieve_glob): Return QUOTEXC on quota exceeded.
10073
10074         * main.c (main): Check for quota by comparison with downloaded
10075         stuff, not from status.
10076
10077         * connect.c (select_fd): Should compile on HPUX without warnings now.
10078
10079         * ftp.c (ftp_get_listing): Check whether ftp_loop_internal
10080         returned RETROK.
10081
10082 1996-11-04  Hrvoje Niksic  <hniksic@srce.hr>
10083
10084         * ftp.c (ftp_retrieve_glob): Print the pattern nicely.
10085         (getftp): Return FTPRETRINT on control connection error.
10086
10087         * html.c (htmlfindurl): Recognize <embed src=...> and
10088         <bgsound src=...>.
10089         (ftp_index): Handle username and password correctly.
10090
10091         * main.c (main): Made `-np' a synonim for --no-parent.
10092
10093 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
10094
10095         * ftp.c (ftp_loop): Check for opt.ftp_glob too before calling
10096         ftp_retrieve_glob.
10097
10098         * version.c: Changed version to 1.4.0-test2.
10099
10100 1996-11-02  Hrvoje Niksic  <hniksic@srce.hr>
10101
10102         * version.c: Released 1.4.0-test1.
10103
10104         * url.c (str_url): Don't use sprintf when creating %2F-prefixed
10105         directory.
10106         (convert_links): Removed definition of make_backup.
10107
10108         * http.h: Removed definition of MAX_ERROR_LENGTH.
10109
10110         * host.c (ftp_getaddress): Check for "(none)" domains.
10111
10112         * ftp.c (ftp_retrieve_dirs): Docfix.
10113
10114         * http.c (gethttp): Use ou->referer instead of u->referer.
10115
10116         * retr.c (retrieve_url): Reset u to avoid freeing pointers twice;
10117         this was known to cause coredumps on Linux.
10118
10119         * html.c (ftp_index): Cast the argument to local_time to time_t *.
10120
10121 1996-11-01  Hrvoje Niksic  <hniksic@srce.hr>
10122
10123         * connect.c (select_fd): Use exceptfds -- once and for all.
10124
10125         * retr.c (retrieve_from_file): Free filename after
10126         recursive_retrieve.
10127         (retrieve_from_file): Send RFIRST_TIME to recursive_retrieve on
10128         first-time retrieval.
10129         (retrieve_from_file): Return uerr_t; new argument, count.
10130         (retrieve_from_file): Break on QUOTEXC.
10131
10132         * init.c (setquota): Fixed a bug that caused rejection of
10133         non-postfixed values..
10134
10135 1996-10-30  Hrvoje Niksic  <hniksic@srce.hr>
10136
10137         * version.c: Changed name to wget.
10138
10139         * connect.c (iread): Smarter use of select.
10140         (select_fd): Set errno on timeout.  If not timeout, return 1
10141         instead of 0.
10142
10143 1996-10-29  Hrvoje Niksic  <hniksic@srce.hr>
10144
10145         * ftp.c (ftp_loop_internal): Don't use con->cmd before
10146         establishing it.
10147
10148 1996-10-26  Hrvoje Niksic  <hniksic@srce.hr>
10149
10150         * http.c (gethttp): Send correct referer when using proxy.
10151         (gethttp): Use struct urlinfo ou to access the relevant data; send
10152         correct authorization in all cases.
10153
10154         * host.c (same_host): Use skip_uname to skip username and
10155         password.
10156
10157         * url.c (skip_uname): New function.
10158         (parseurl): Use it.
10159
10160         * host.c (same_host): Do not assume HTTP -- same_host should now
10161         be totally foolproof.
10162
10163         * url.c (skip_proto): New function.
10164         (parse_uname): Use it.
10165
10166         * http.c (gethttp): Create local user and passwd from what is
10167         given.
10168
10169         * url.c (parseurl): Check for HTTP username and password too.
10170
10171 1996-10-25  Hrvoje Niksic  <hniksic@srce.hr>
10172
10173         * config.h.in: Removed #define gethostbyname R...
10174
10175 1996-10-22  Hrvoje Niksic  <hniksic@srce.hr>
10176
10177         * version.c: Changed version to 1.4.0-test1.
10178
10179 1996-10-21  Hrvoje Niksic  <hniksic@srce.hr>
10180
10181         * version.c: "Released" 1.4b29.
10182
10183         * recur.c (recursive_retrieve): Check for no_parent.
10184
10185         * init.c (setval): Option update.
10186
10187         * main.c (main): New option no-parent.
10188
10189         * options.h (struct options): New variable no_parent.
10190
10191         * recur.c (recursive_retrieve): Only files are checked for
10192         opt.accepts and opt.rejects.
10193         (recursive_retrieve): Check directories for opt.excludes.
10194         (recursive_retrieve): Make the dir absolute when checking
10195         opt.excludes.
10196
10197         * html.c (htmlfindurl): Recognize <applet code=...> and <script
10198         src=...>
10199
10200 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
10201
10202         * ftp.c (getftp): Do not line-break assert entries at all.
10203         (ftp_retrieve_dirs): docfix.
10204
10205         * connect.c (select_fd): Use fd + 1 as nfds.
10206
10207         * version.c: Changed version to 1.4b29.
10208
10209 1996-10-18  Hrvoje Niksic  <hniksic@srce.hr>
10210
10211         * version.c: "Released" 1.4b28.
10212
10213         * ftp.c (ftp_loop_internal): Check whether f->size == len and
10214         don't continue the loop if it is.
10215         (ftp_get_listing): Remove list_filename on unsuccesful loop.
10216
10217 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
10218
10219         * ftp.c (ftp_loop_internal): Use strcpy to initialize tmp.
10220         (getftp): Do not use multiline assert.
10221
10222         * http.c (hparsestatline): Use mjr and mnr instead of major and
10223         minor, which don't compile on Ultrix.
10224         (http_loop): Use strcpy() to initialize tmp.
10225
10226         * all: Geturl -> Fetch
10227
10228 1996-10-17  Hrvoje Niksic  <hniksic@srce.hr>
10229
10230         * recur.c (parse_robots): Fixed an off-by-one bug when looking for
10231         ':'.
10232
10233         * html.c (htmlfindurl): Fixed several possible off-by-one bugs by
10234         moving `bufsize &&' to the beginning of each check in for-loops.
10235
10236         * recur.c (parse_robots): Close fp on exit.
10237
10238         * url.c (mymkdir): Check for each directory before creating.
10239
10240 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
10241
10242         * version.c: Changed version to 1.4b28.
10243
10244 1996-10-16  Hrvoje Niksic  <hniksic@srce.hr>
10245
10246         * version.c: "Released" 1.4b27.
10247
10248         * init.c (parse_line): Use isspace.
10249         (parse_line): Free *com on all errors.
10250
10251         * ftp.c (ftp_loop): Change FTPOK to RETROK before exiting.
10252         (delelement): Use next instead of f->next and prev instead of
10253         f->prev.
10254         (delelement): Free the members of the deleted element.
10255
10256         * http.c (http_loop): Do not return RETROK on code != 20x.
10257
10258         * init.c (cleanup): Free opt.user_header.
10259         (cleanup): Free opt.domains.
10260
10261         * url.c (freelists): Moved to cleanup().
10262
10263         * http.c (hparsestatline): Docfix.
10264
10265         * main.c (main): Return with error status on unsuccesful
10266         retrieval.
10267
10268         * init.c (setval): Do not remove listing when mirroring.
10269
10270         * url.c (url_filename): Use opt.fileprefix.
10271
10272         * ftp.c (ftp_get_listing): Use url_filename to get filename for
10273         .listing.
10274
10275         * main.c (main): New option: -rn.
10276
10277 1996-10-15  Hrvoje Niksic  <hniksic@srce.hr>
10278
10279         * Makefile.in (RM): Added RM = rm -f.
10280
10281         * host.c (clean_hosts): New function.
10282         (free_hlist): Just free the list, no reset.
10283
10284         * version.c: Changed version to 1.4b27.
10285
10286 1996-10-13  Hrvoje Niksic  <hniksic@srce.hr>
10287
10288         * version.c: "Released" 1.4b26.
10289
10290         * retr.c (retrieve_from_file): If call get_urls_html with
10291         opt.spider to make it silent in spider mode.
10292
10293         * url.c (str_url): Use CLEANDUP instead of URL_CLEANSE.
10294
10295         * url.h (CLEANDUP): New macro.
10296
10297         * http.c (gethttp): Fixed a bug that freed location only when it
10298         was NULL.
10299
10300         * retr.c (retrieve_url): Free url if it will not be stored,
10301         i.e. newloc is NULL.
10302
10303         * html.c (htmlfindurl): Handle exiting from quotes correctly; the
10304         old version would bug out on <a href="x#a"href="y">.
10305
10306         * html.h (state_t): New member in_quote.
10307
10308         * html.c (htmlfindurl): Free s->attr at the beginning of
10309         attr-loop.
10310
10311         * recur.c (recursive_retrieve): Recognize RCLEANUP.
10312         (tried_robots): Make hosts a global variable.
10313         (recursive_retrieve): Free constr after URL host optimization.
10314         (tried_robots): Free urlinfo before exiting.
10315
10316         * utils.c (free_slist): New function.
10317
10318         * recur.c (recursive_retrieve): Use flags to add cleanup
10319         possibility.
10320
10321         * main.c (main): Free filename after recursive_retrieve.
10322
10323         * http.c (gethttp): Store successful responses too.
10324
10325 1996-10-12  Hrvoje Niksic  <hniksic@srce.hr>
10326
10327         * all: Constified the whole source.  This required some minor
10328         changes in many functions in url.c, possibly introducing bugs -- I
10329         hope not.
10330
10331         * ftp-basic.c: Removed last_respline.
10332
10333         * http.c (gethttp): Free type.
10334
10335         * host.c (same_host): Free real1 and real2.
10336
10337         * main.c (main): New option --spider.
10338
10339         * retr.c (get_contents): Don't reset errno.
10340
10341         * main.c (main): Sorted the options.
10342
10343         * connect.c (iread): Set errno to ETIMEDOUT only if it was left
10344         uninitialized by select().
10345
10346         * http.c (http_loop): Print the time when the connection is
10347         closed.
10348         (gethttp): Debug-print the HTTP request.
10349
10350 1996-10-11  Hrvoje Niksic  <hniksic@srce.hr>
10351
10352         * connect.c (iread): Do not try reading after timeout.
10353
10354         * main.c (main): Would bug out on -T.
10355
10356         * connect.c (select_fd): Do not use exceptfds.
10357         (iread): Set ETIMEDOUT on select_fd <= 0.
10358
10359         * version.c: Changed version to 1.4b26.
10360
10361 1996-10-10  Hrvoje Niksic  <hniksic@srce.hr>
10362
10363         * version.c: "Released" 1.4b25.
10364
10365         * ftp-unix.c (ftp_parse_unix_ls): Ignore lines without file name
10366         or link name.
10367
10368         * http.c (gethttp): Add errcode to struct hstat.
10369         (http_loop): Use it.
10370
10371         * url.c (no_proxy_match): Simplify using char** for no_proxy.
10372
10373         * options.h (struct options): Make opt.no_proxy a vector.
10374
10375         * utils.c (sepstring): Use !*s instead of !strlen(s).
10376
10377         * init.c (setval): Set opt.maxreclevel to 0 on --mirror.
10378         (getperms): Use ISODIGIT instead of isdigit.
10379
10380         * ftp.c (getftp): Print time.
10381
10382         * main.c (main): Use legible output of downloaded quantity.
10383
10384         * ftp.c (getftp): Use elapsed_time().
10385         (ftp_loop_internal): Use rate().
10386
10387         * http.c (http_loop): Add download ratio output; Use rate().
10388
10389         * utils.c (rate): New function.
10390
10391 1996-10-09  Hrvoje Niksic  <hniksic@srce.hr>
10392
10393         * http.c (http_loop): Use timer.
10394
10395         * ftp.c: Split to ftp-basic.c and ftp.c
10396
10397         * utils.c (reset_timer): New function.
10398         (elapsed_time): New function.
10399
10400         * retr.c (show_progress): Make bytes_in_line and offs long; should
10401         work on 16-bit machines.
10402
10403 1996-10-08  Hrvoje Niksic  <hniksic@srce.hr>
10404
10405         * url.c (in_acclist): New argument backward.
10406
10407         * ftp.c (ftp_retrieve_glob): Use acceptable() to determine whether
10408         a file should be retrieved according to suffix.
10409         (ftp_get_listing): Check the return value of unlink; Do not call
10410         ftp_retrieve_dirs if depth reached maxreclevel.
10411         (ftp_retrieve_dirs): Check whether the directory is in
10412         exclude-list.
10413
10414         * main.c (main): Print the version number at the beginning of
10415         DEBUG output.
10416         (main): Use strrchr when creating exec_name.
10417
10418         * ftp.c (ftp_retrieve_glob): Do not close control connection.
10419
10420         * version.c: Changed version to 1.4b25.
10421
10422 1996-10-07  Hrvoje Niksic  <hniksic@srce.hr>
10423
10424         * version.c: "Released" 1.4b24.
10425
10426         * Makefile.in: Rewrite.
10427
10428         * ftp.c (ftp_loop_internal): Likewise.
10429
10430         * retr.c (time_str): Check for failed time().
10431
10432         * html.c (htmlfindurl): Recognize <fig src> and <overlay src> from
10433         HTML3.0.
10434
10435         * retr.c (time_str): Return time_t *.
10436
10437         * connect.c (bindport): Close msock on unsuccesful bind.
10438         (bindport): The same for getsockname and listen.
10439
10440         * retr.c (retrieve_url): Allow any number of retries on
10441         proxy.
10442
10443         * http.c (gethttp): Do not treat errno == 0 as timeout.
10444         (http_loop): Likewise.
10445         (http_loop): Cosmetic changes.
10446
10447         * connect.c (iread): Set errno to ETIMEDOUT in case of timeout.
10448
10449         * retr.c (get_contents): Reset errno.
10450
10451         * ftp.c (getftp): Minor fixes.
10452
10453 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
10454
10455         * http.c: Do not use backups.
10456
10457         * geturl.1 (WARNING): Warn that man-page could be obsolete.
10458
10459         * getopt.c (getopt_long): Moved to getopt.c
10460
10461         * geturl.texi: Enhanced.
10462
10463         * main.c (main): Use it.
10464
10465         * recur.c (convert_all_links): New function.
10466
10467         * utils.c (add_slist): New argument flags.
10468
10469         * recur.c (recursive_retrieve): Update a list of downloaded URLs.
10470         (parse_robots): Do not chuck out empty value fields.
10471         (parse_robots): Make yourself welcome on empty Disallow.
10472
10473         * version.c: Changed version to 1.4b24.
10474
10475 1996-10-06  Hrvoje Niksic  <hniksic@srce.hr>
10476
10477         * version.c: "Released" 1.4b23.
10478
10479         * ftp.c (ftp_loop_internal): Get the time after getftp.
10480
10481         * Makefile.in (install.info): New target.
10482         (install): Use it.
10483
10484         * http.c (http_loop): Fix output when doing -O.
10485
10486 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
10487
10488         * geturl.texi: New file.
10489
10490         * main.c (main): Do not print the warnings and download summary if
10491         opt.quiet is set.
10492
10493         * version.c: Changed version to 1.4b23.
10494
10495 1996-10-05  Hrvoje Niksic  <hniksic@srce.hr>
10496
10497         * "Released" 1.4b22.
10498
10499         * atotm.c (atotm): Use True and False instead of TRUE and FALSE,
10500         to avoid redefinition warnings.
10501
10502         * host.c (store_hostaddress): Use memcpy() to copy the address
10503         returned by inet_addr.
10504
10505         * version.c: Changed version to 1.4b22.
10506
10507 1996-10-04  Hrvoje Niksic  <hniksic@srce.hr>
10508
10509         * version.c: "Released" 1.4b21.
10510
10511         * ftp-unix.c (ftp_parse_ls): Renamed to ftp_parse_unix_ls.
10512
10513         * ftp.c (ftp_port): Use conaddr.
10514         (getftp): Print the file length.
10515         (ftp_retrieve_list): Check the stamps of plain files only.
10516
10517         * connect.c (closeport): Do not call shutdown().
10518         (conaddr): New function.
10519
10520         * html.c (ftp_index): Made it dfp-aware.
10521
10522         * init.c (cleanup): New name of freemem. Close opt.dfp.
10523
10524         * ftp.c (getftp): Use opt.dfp if it is set.
10525
10526         * ftp-unix.c (ftp_parse_ls): Recognize time in h:mm format.
10527
10528         * ftp.c (ftp_retrieve_dirs): Fixed a bug that caused incorrect
10529         CWDs to be sent with recursive FTP retrievals.
10530
10531 1996-10-03  Hrvoje Niksic  <hniksic@srce.hr>
10532
10533         * recur.c (parse_robots): Made it more compliant with "official"
10534         specifications.
10535
10536         * http.c: New function.
10537
10538         * ftp-unix.c (ftp_parse_ls): Added better debug output.
10539
10540         * ftp.c (getftp): Print out the LIST in case of
10541         opt.print_server_response.
10542
10543         * version.c: Changed version to 1.4b21.
10544
10545 1996-10-01  Hrvoje Niksic  <hniksic@srce.hr>
10546
10547         * version.c: "Released" 1.4b20.
10548
10549         * README: Update.
10550
10551         * http.c (gethttp): Preset lengths of various headers instead of
10552         calculating them dynamically.
10553         (gethttp): Check for 206 partial contents.
10554
10555 1996-09-30  Hrvoje Niksic  <hniksic@srce.hr>
10556
10557         * configure.in: Set SYSTEM_GETURLRC to $libdir/geturlrc
10558
10559         * http.c (gethttp): Send the port number in the Host: header.
10560
10561 1996-09-29  Hrvoje Niksic  <hniksic@srce.hr>
10562
10563         * http.c (gethttp): Send host: header.
10564         (gethttp): Add the possibility of user-defined headers.
10565         (gethttp): Move decision about pragma: no-cache to http_loop,
10566         where it belongs.
10567         (gethttp): Pass a struct instead of enormous argument list.
10568         (http_loop): Use a new, fancier display format.
10569         (ftp_loop): Likewise.
10570
10571         * main.c: (hangup): Turn off buffering of the new log file.
10572
10573         * install-sh: Likewise.
10574
10575         * config.sub: Replace with the one in autoconf-2.10
10576
10577         * geturl.1: Update.
10578
10579         * init.c: New options httpuser and httppasswd.
10580
10581         * http.c: (base64_encode_line): New function.
10582         (gethttp): Send authentication.
10583
10584         * connect.c (make_connection): Use store_hostaddress.
10585
10586 1996-09-28  Hrvoje Niksic  <hniksic@srce.hr>
10587
10588         * host.c (store_hostaddress): New function.
10589
10590         * NEWS: Update.
10591
10592         * http.c (hgetrange): New function.
10593         (gethttp): Use ranges.
10594
10595         * utils.c (numdigit): Accept long instead of int.
10596
10597         * http.c (http_loop): Add restart capabilities.
10598
10599         * ftp.c (ftp_retrieve_glob): Fixed a bug that could cause matchres
10600         being used uninitialized.
10601         (ftp_retrieve_list): Similar fix.
10602
10603         * host.c (add_hlist): Fixed a bug that could cause cmp being used
10604         uninitialized.
10605
10606         * url.c (construct_relative): New function.
10607
10608         * recur.c (recursive_retrieve): Use it.
10609
10610         * retr.c (convert_links): New function.
10611
10612 1996-09-27  Hrvoje Niksic  <hniksic@srce.hr>
10613
10614         * url.c (free_urlpos): New function.
10615
10616         * recur.c (recursive_retrieve): Adapt.
10617
10618         * url.c (get_urls_html): Return a linked list instead of a vector.
10619
10620         * url.c (get_urls_file): Return a linked list instead of a vector.
10621
10622         * geturl.1: Update.
10623
10624         * http.c (gethttp): Implement it.
10625
10626         * init.c (setval): New option: SAVEHEADERS
10627
10628         * ftp.c (ftp_loop_internal): Do not set restval if listing is to
10629         be retrieved. Lack of this test caused bugs when the connection
10630         was lost during listing.
10631
10632         * retr.c (retrieve_url): Fixed a bug that caused
10633         coredumps. *newloc is now reset by default.
10634         (retrieve_url): Lift the twenty-tries limit on proxies.
10635
10636         * version.c: Changed version to 1.4b20.
10637
10638 1996-09-20  Hrvoje Niksic  <hniksic@srce.hr>
10639
10640         * version.c: "Released" 1.4b19.
10641
10642 1996-09-19  Hrvoje Niksic  <hniksic@srce.hr>
10643
10644         * ftp.c (ftp_loop_internal): Renamed from ftp_1fl_loop.
10645         (getftp): Changed prototype to accept ccon *.
10646
10647 1996-09-17  Hrvoje Niksic  <hniksic@srce.hr>
10648
10649         * ftp.c (ftp_retrieve_list): Fixed a bug that caused setting
10650         incorrect values to files pointed to by symbolic links.
10651         (ftp_1fl_loop): Do not count listings among the downloaded URL-s.
10652
10653 1996-09-16  Hrvoje Niksic  <hniksic@srce.hr>
10654
10655         * url.c (mkstruct): Do not prepend "./" in front of a pathname.
10656
10657         * main.c (main): New option: --user-agent.
10658
10659         * geturl.1: Ditto.
10660
10661         * init.h: Ditto.
10662
10663         * init.c (setval): Ditto.
10664
10665         * main.c (main): Rename "server-headers" to "server-response".
10666
10667         * ftp-unix.c (ftp_parse_ls): Check for asterisks at the end of
10668         executables in 'ls -F' listings.
10669
10670 1996-09-15  Hrvoje Niksic  <hniksic@srce.hr>
10671
10672         * url.c (parseurl): Remove realloc() and sprintf().
10673         (str_url): Get rid of sprintf().
10674
10675         * recur.c (recursive_retrieve): Enable FTP recursion through proxy
10676         servers.
10677
10678         * url.h (URL_CLEANSE): Made it else-resistant.
10679         (USE_PROXY): New macro.
10680
10681 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
10682
10683         * NEWS: Update.
10684
10685         * version.c: Changed version to 1.4b19.
10686
10687 1996-09-14  Hrvoje Niksic  <hniksic@srce.hr>
10688
10689         * version.c: "Released" 1.4b18.
10690
10691         * url.c: Made it reallocate space exponentially.
10692
10693 1996-09-14  Drazen Kacar  <dave@fly.cc.fer.hr>
10694
10695         * html.c (htmlfindurl): Added <frame src> and <iframe src> among
10696         the list of stuff to fetch.
10697
10698 1996-09-13  Hrvoje Niksic  <hniksic@srce.hr>
10699
10700         * url.c (get_urls_html): Fixed a bug that caused SIGSEGV's with
10701         -Fi.
10702
10703         * html.c (htmlfindurl): Rewrite.
10704
10705         * http.c (gethttp): Use opt.proxy_cache.
10706
10707         * main.c (main): Added --cache option.
10708
10709         * ftp.c (ftp_response): Print server response if opt.print_server
10710         response is set.
10711         (getftp): Print newlines after each request if the server response
10712         is to be printed.
10713         (ftp_response): Copy the last response line to last_respline.
10714
10715         * http.c (gethttp): Add Pragma: nocache for retried
10716         proxy-retrievals.
10717
10718         * ftp.c (getftp): Use it.
10719
10720         * retr.c (buf_discard): New function.
10721
10722         * ftp.c (ftp_response): Use buf_readchar().
10723         (getftp): Flush the control connection buffer before calling
10724         get_contents().
10725
10726         * retr.c (buf_readchar): New function.
10727         (buf_flush): New function.
10728         (get_contents): Use buf_readchar() instead of read(x, x, 1).
10729         (get_contents): Use buf_flush.
10730
10731 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
10732
10733         * ftp.c: Incorporate changes to ftp_response.
10734
10735         * ftp.c (ftp_response): Allocate the server response dynamically,
10736         as in read_whole_line and fetch_next_header.
10737
10738         * utils.c (read_whole_line): Fixed a bug that prevented reading
10739         the last line if it is not \n-terminated. Also fixed a possible
10740         memory overflow.
10741
10742         * http.c (fetch_next_header): Return malloc-ed string as large as
10743         needed.
10744         (gethttp): Use new fetch_next_header.
10745
10746 1996-09-12  Hrvoje Niksic  <hniksic@srce.hr>
10747
10748         * http.c (hgetlen): Compute the header length the first time only.
10749         (hgettype): Ditto.
10750         (hgetlocation): Ditto.
10751         (hgetmodified): Ditto.
10752
10753 1996-09-11  Hrvoje Niksic  <hniksic@srce.hr>
10754
10755         * sample.geturlrc: Update.
10756
10757 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
10758
10759         * http.c (http_loop): Ditto.
10760
10761         * ftp.c (getftp): Open the output file as binary.
10762
10763         * version.c: Changed version to 1.4b18.
10764
10765 1996-09-10  Hrvoje Niksic  <hniksic@srce.hr>
10766
10767         * version.c: "Released" 1.4b17.
10768
10769         * ftp-unix.c (ftp_parse_ls): If unable to open file, return NULL
10770         instead of failed assertion.
10771
10772 1996-09-09  Hrvoje Niksic  <hniksic@srce.hr>
10773
10774         * ftp.c (ftp_get_listing): Add a numbered suffix to LIST_FILENAME
10775         if a file of that name already exists.
10776
10777 1996-09-05  Hrvoje Niksic  <hniksic@srce.hr>
10778
10779         * ftp.c (ftp_1fl_loop): Handler FTPPORTERR and FOPENERR correctly.
10780
10781         * config.h.in: Define gethostbyname as Rgethostbyname when using
10782         Socks.
10783
10784         * configure.in: Check for -lresolv if using Socks.
10785
10786         * version.c: Changed version to 1.4b17.
10787
10788 1996-07-15  Hrvoje Niksic  <hniksic@srce.hr>
10789
10790         * version.c: "Released" 1.4b16.
10791
10792         * http.c (gethttp): More intelligent check for first line of HTTP
10793         response.
10794         (gethttp): Would bug out on time-stamping.
10795
10796         * version.c: Changed version to 1.4b16.
10797
10798 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
10799
10800         * version.c: Released 1.4b15.
10801
10802         * http.c (http_loop): Print \n after the loop entry, not before.
10803
10804         * url.c (url_filename): Use ISDOT.
10805
10806         * url.h (ISDOT): New macro.
10807
10808         * recur.c (recursive_retrieve): Change only opt.recursive for
10809         following FTP.
10810
10811 1996-07-11  Antonio Rosella <antonio.rosella@agip.it>
10812
10813         * socks/geturl.cgi: Fixed version No.
10814
10815         * socks/download-netscape.html: Ditto.
10816
10817         * socks/download.html: Changed socks.html to download.html.
10818
10819 1996-07-11  Hrvoje Niksic  <hniksic@srce.hr>
10820
10821         * url.c (url_filename): Check for opt.dirstruct instead for
10822         opt.recursive && opt.dirstruct.
10823
10824         * init.c (defaults): Ditto.
10825         (defaults): Reset dirstruct by default.
10826         (setval): Set opt.dirstruct whenever setting recursive.
10827
10828         * init.h: Removed FORCEDIRHIER.
10829
10830         * INSTALL: Added -L to socks-description.
10831
10832         * version.c: Changed version to 1.4b15.
10833
10834 1996-07-10  Hrvoje Niksic  <hniksic@srce.hr>
10835
10836         * version.c: "Released" 1.4b14.
10837
10838         * geturl.1: Update AUTHOR to include Rosella as contributor.
10839
10840         * NEWS: Update.
10841
10842         * socks/geturl.cgi: Simplified command creation, nuked <blink>.
10843
10844         * socks/geturl.cgi: Wrap nutscape extensions within if $netscape.
10845         (cal_time): Fix == to eq.
10846
10847         * socks/geturl.cgi: GPL-ized with permission of A. Rosella.
10848
10849         * geturl.1 (hostname): Moved URL CONVENTIONS to the beginning.
10850
10851         * Makefile.in: Use @VERSION@.
10852
10853         * configure.in: Check version from version.c.
10854
10855         * socks/geturl.cgi: Changed /pub/bin/perl to /usr/bin/perl.
10856
10857         * socks/download.html: Created from download-netscape.html, made
10858         HTML-2.0 compliant.
10859
10860         * recur.c (recursive_retrieve): Set opt.force_dir_hier when
10861         following FTP links from recursions.
10862
10863 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
10864
10865         * url.c (mymkdir): Fixed a bug that prevented mymkdir() to create
10866         absolute directories correctly.
10867
10868         * version.c: Changed version to 1.4b14.
10869
10870 1996-07-09  Hrvoje Niksic  <hniksic@srce.hr>
10871
10872         * version.c: "Released" 1.4b13.
10873
10874         * url.c (make_backup): New function.
10875
10876         * http.c (http_loop): Make a backup copy of the local file (using
10877         rename(2)) before opening it.
10878
10879         * main.c (main): Added --backups.
10880
10881         * host.c (ftp_getaddress): Bail out on failed mycuserid().
10882         (ftp_getaddress): Check for leading dot on MY_DOMAIN.
10883         (ftp_getaddress): Check for empty, null or (null) domain.
10884
10885         * url.c (get_urls_html): If this_url is NULL, the base must have a
10886         protocol.
10887         (parseurl): Use has_proto.
10888
10889         * retr.c (retrieve_url): Warn when proxy is used with more than 20
10890         retries.
10891
10892         * url.c (mkstruct): Create the directory (calling mymkdir()) only
10893         if it is not already there.
10894         (has_proto): New function.
10895         (get_urls_html): Eliminate the remaining call to findurl -- use
10896         has_proto.
10897
10898         * geturl.1: Ditto.
10899
10900         * main.c: Change -X to -x.
10901
10902         * url.c (url_filename): Simplify creation of filename if
10903         prefix_files is set.
10904         (url_filename): Simplify everything. And I do mean *everything*.
10905         (mkstruct): Add dir_prefix before hostname.
10906         (path_simplify): Fixed a bug that caused writing outside the path
10907         string in case of "." and ".." path strings.
10908
10909 1996-07-06  Hrvoje Niksic  <hniksic@srce.hr>
10910
10911         * init.c: Added --mirror.
10912
10913         * main.c (main): Added -X to force saving of directory hierarchy.
10914
10915         * ftp.c (ftp_retrieve_list): Added recursion depth counter.
10916         (ftp_retrieve_list): Check whether quota is exceeded.
10917
10918         * url.c (get_urls_html): Skip leading blanks for absolute URIs.
10919
10920         * http.c (gethttp): Use referer if present.
10921
10922         * recur.c (recursive_retrieve): Set u->referer before calling
10923         retrieve_url.
10924
10925         * url.c (newurl): Use memset to nullify the struct members.
10926         (freeurl): Free the referer field too.
10927
10928         * url.h: Added referer to urlinfo.
10929
10930         * geturl.1: Updated the manual to document some of the new features.
10931
10932         * utils.c (numdigit): Moved from url.c.
10933
10934         * README: Rewritten.
10935
10936         * config.h.in: Add the support for socks.
10937
10938         * configure.in: Add the support for socks.
10939
10940         * url.c (url_filename): If the dir_prefix is ".", work with just
10941         the file name.
10942         (url_filename): Do not look for .n extensions if timestamping if
10943         turned on.
10944
10945         * retr.c (show_progress): Skip the over-abundant restval data, and
10946         print the rest of it with ',' instead of '.'.
10947
10948 1996-07-05  Hrvoje Niksic  <hniksic@srce.hr>
10949
10950         * retr.c (show_progress): Changed second arg. to long (as it
10951         should be).
10952         (show_progress): Moved to retr.c.
10953         (get_contents): Moved to retr.c.
10954
10955         * version.c: Change version to 1.4b13.
10956
10957 1996-07-05  Hrvoje Lacko <hlacko@fly.cc.fer.hr>
10958
10959         * url.c (in_acclist): Would return after the first suffix.
10960
10961 1996-07-04  Hrvoje Niksic  <hniksic@srce.hr>
10962
10963         * version.c: "Released" 1.4b12.
10964
10965         * url.c (path_simplify): More kludgifications.
10966         (get_urls_html): Use new parameters for htmlfindurl.
10967
10968         * html.c: Removed memorizing "parser states", since the new
10969         organization does not require them.
10970
10971         * init.c (run_geturlrc): Use read_whole_line.
10972
10973         * ftp-unix.c (ftp_parse_ls): Use read_whole_line.
10974
10975         * recur.c (parse_robots): Use read_whole_line.
10976
10977         * utils.c (read_whole_line): New function.
10978
10979         * recur.c (tried_robots): Use add_slist/in_slist, *much* cleaner.
10980
10981         * host.c (ngethostbyname): Call inet_addr just once. Yet to be
10982         tested on OSF and Ultrix.
10983         (add_hlist): New function.
10984         (free_hlist): New function.
10985         (search_host): New function.
10986         (search_address): New function.
10987         (realhost): Use search_host, search_address and add_hlist.
10988         (same_host): Replaced realloc() with strdupdelim(), made
10989         case-insensitive, fixed a memory leak.
10990
10991         * html.c (ftp_index): Fixed tm_min and tm_sec to be tm_hour and
10992         tm_min, like intended.
10993
10994         * version.c: Change user agent information to
10995         Geturl/version.
10996
10997 1996-07-03  Hrvoje Niksic  <hniksic@srce.hr>
10998
10999         * utils.c: Renamed nmalloc.c to utils.c, .h likewise.
11000
11001         * url.c (acceptable): Always accept directories.
11002
11003         * ftp-unix.c (ftp_parse_ls): Support brain-damaged "ls -F"-loving
11004         servers by stripping trailing @ from symlinks and trailing / from
11005         directories.
11006
11007         * ftp.c (ftp_loop): Debugged the "enhanced" heuristics. :-)
11008
11009         * url.c (skip_url): Use toupper instead of UCASE.
11010
11011         * host.c (sufmatch): Made it case-insensitive.
11012
11013         * url.c (match_backwards_or_pattern): Fixed i == -1 to j == -1.
11014         (match_backwards): New function, instead of
11015         match_backwards_or_pattern.
11016
11017         * recur.c (recursive_retrieve): Increased performance by
11018         introducing inl, which reduces number of calls to in_slist to only
11019         one.
11020
11021         * ftp.c (ftp_loop): Enhanced the heuristics that decides which
11022         routine to use.
11023
11024         * main.c (printhelp): Removed the warranty stuff.
11025
11026 1996-07-02  Hrvoje Niksic  <hniksic@srce.hr>
11027
11028         * url.c (add_slist): Simplify.
11029         (match_backwards_or_pattern): New function.
11030         (in_acclist): Use match_backwards_or_pattern.
11031         (matches): Remove.
11032
11033 1996-06-30  Hrvoje Niksic  <hniksic@srce.hr>
11034
11035         * ftp.c (ftp_loop): Call ftp_index on empty file names, if not
11036         recursive.
11037
11038         * html.c (ftp_index): Fixed to work. Beautified the output.
11039
11040         * ftp.c (ftp_retrieve_glob): Another argument to control whether
11041         globbing is to be used.
11042         (ftp_retrieve_list): Compare the time-stamps of local and remote
11043         files to determine whether to download.
11044
11045 1996-06-29  Hrvoje Niksic  <hniksic@srce.hr>
11046
11047         * ftp.c (rel_constr): New function.
11048
11049         * retr.c (retrieve_from_file): Check for text/html before
11050         retrieving recursively.
11051
11052         * main.c (main): Check whether the file is HTML before going into
11053         recursive HTML retrieving.
11054
11055         * ftp.c (ftp_retrieve_list): Manage directories.
11056         (ftp_retrieve_glob): Pass all the file-types to ftp_retrieve_list.
11057         (ftp_1fl_loop): Fixed a bug that caused con->com to be incorrectly
11058         initialized, causing bugchecks in getftp to fail.
11059
11060         * configure.in: Check for symlink.
11061
11062         * ftp.c (ftp_retrieve_list): Added support for symlinks.
11063
11064         * version.c: "Released" 1.4b10.
11065
11066         * atotm.c (atotm): Redeclared as time_t.
11067
11068         * init.c: New variable "timestamping".
11069
11070         * main.c (main): New option 'N'.
11071
11072         * http.c (hgetlocation): Case-insensitive match.
11073         (hgetmodified): New function.
11074         (http_loop): Implement time-stamping.
11075
11076 1996-06-28  Hrvoje Niksic  <hniksic@srce.hr>
11077
11078         * version.c: Changed version to 1.4b10
11079
11080         * atotm.c: New file, from phttpd.
11081
11082         * options.h (struct options): New parameter timestamping.
11083
11084         * version.c: 1.4b9 "released".
11085
11086         * recur.c (recursive_retrieve): Used linked list (ulist) for
11087         faster storing of URLs.
11088
11089         * url.c (get_urls_html): Removed the old kludge with comparing the
11090         outputs of htmlfindurl and findurl.
11091         (get_urls_html): Added better protocol support here.
11092         (create_hash): Removed, as well as add_hash and in_hash.
11093         (addslist): New function.
11094         (in_slist): ditto
11095
11096         * version.c: Released 1.4b8, changed version to b9.
11097
11098 1996-06-27  Hrvoje Niksic  <hniksic@srce.hr>
11099
11100         * ftp.c (freefileinfo): New function.
11101         (delelement): New function.
11102
11103         * everywhere: GPL!
11104
11105         * ftp.c (ftp_loop): Use ccon.
11106         (ftp_retrieve_glob): Likewise.
11107
11108         * ftp.h: Define ccon, to define status of control connection.
11109
11110         * ftp.c (ftp_get_listing): New function.
11111         (ftp_retrieve_more): New function.
11112         (ftp_retrieve_glob): New function.
11113
11114 1996-06-25  Hrvoje Niksic  <hniksic@srce.hr>
11115
11116         * configure.in: Removed the search for cuserid().
11117
11118         * init.c (getmode): Renamed to getperms.
11119
11120 1996-06-24  Hrvoje Niksic  <hniksic@srce.hr>
11121
11122         * version.c: New version.
11123
11124         * main.c (hangup): New function, that handles hangup. Hangup
11125         signal now causes geturl to stop writing on stdout, and to write
11126         to a log file.
11127
11128         * ftp.c (getftp): "Released" 1.4b7.
11129
11130         * html.c (htmlfindurl): Ignore everything inside <head>...</head>.
11131         (ftp_index): Use fileinfo/urlinfo.
11132
11133         * ftp-unix.c (ftp_parse_ls): New function.
11134         (symperms): New function.
11135
11136         * ftp.c (ftp_1fl_loop): New function, to handle 1-file loops.
11137
11138         * retr.c (retrieve_url): Added FTP support.
11139
11140 1996-06-23  Hrvoje Niksic  <hniksic@srce.hr>
11141
11142         * geturl.h: Removed NOTFTP2HTML enum.
11143         Added DO_LOGIN, DO_CWD and DO_LIST. LIST_ONLY is obsolete.
11144
11145         * ftp.c (getftp): Resynched with urlinfo.
11146         (getftp): Removed HMTL-ization of index.html from getftp.
11147
11148         * version.c: 1.4b6 "released".
11149
11150         * options.h (options): New struct, to keep options in.
11151
11152         * http.c (http_loop,gethttp): Synched with proxy.
11153
11154         * retr.c (retrieve_url): Implemented proxy retrieval.
11155
11156         * main.c (main): Use retrieve_from_file.
11157
11158 1996-06-22  Hrvoje Niksic  <hniksic@srce.hr>
11159
11160         * retr.c (retrieve_from_file): New function.
11161
11162         * url.c (parseurl): Modified to return URLOK if all OK. Protocol
11163         can be found in u->proto.
11164
11165         * ftp.c (ftp_response): Fixed to accept multi-line responses as
11166         per RFC 959.
11167
11168         * recr.c (recursive_retrieve): Take newloc from retrieve_url.
11169
11170         * url.c (mymkdir): Removed the file of the same name, if one
11171         exists.
11172         (isfile): New function.
11173         (mkstruct): Fixed the '/' glitches.
11174         (path_simplify): Hacked to treat something/.. correctly.
11175
11176 1996-06-21  Hrvoje Niksic  <hniksic@srce.hr>
11177
11178         * http.c (gethttp): Close the socket after error in headers.
11179         (http_loop): HEOF no longer a fatal header.
11180
11181         * loop.c (retrieve_url): When dt is NULL, do not modify it. This
11182         simplifies the syntax of calling retrieve_url.
11183
11184         * recr.c (recursive_retrieve): Modified to use get_urls_html.
11185
11186         * url.c (get_urls_file): New function.
11187         (get_urls_html): New function.
11188
11189         * recr.c (recursive_retrieve): Patched up to conform to the
11190         standards.
11191
11192         * http.c (gethttp): Synched with the rest...
11193         (gethttp): Treat only CONREFUSED specially, with connection
11194         errors.
11195
11196         * init.c,geturl.1,http.c (http_loop): Removed kill_error.
11197
11198 1996-06-20  Hrvoje Niksic  <hniksic@srce.hr>
11199
11200         * http.c (http_loop): New function.
11201
11202         * loop.c: Removed *lots* of stuff from retrieve_url.
11203
11204         * url.c (parseurl): Changed to work with urlinfo. Integrated
11205         username finding and path parsing.
11206         (newurl): New function.
11207         (freeurl): New function.
11208         (mkstruct): Removed the old bogosities, made it urlinfo-compliant.
11209         (url_filename): Likewise.
11210         (path_simplify): Accept relative paths too.
11211         (opt_url): Made urlinfo-compliant, removed bogosities.
11212         (path_simplify): Expanded to accept relative paths.
11213         (str_url): A replacement for hide_url
11214         (decode_string): Fixed a bug that caused malfunctioning when
11215         encountering an illegal %.. combination.
11216         (opt_url): Removed the argument. Dot-optimizations are now default.
11217
11218         * nmalloc.c (strdupdelim): New function.
11219
11220         * url.h: Added the urlinfo structure
11221
11222 1996-06-19  Hrvoje Niksic  <hniksic@srce.hr>
11223
11224         * url.c (hide_url): Thrown out the protocol assertion. Do not
11225         change the URL if the protocol if not recognized.
11226         (findurl): Put continue instead of break.
11227
11228 1996-06-18  Hrvoje Niksic  <hniksic@srce.hr>
11229
11230         * sample.geturlrc: Changed the defaults to be commented out and
11231         harmless (previous defaults caused pains if copied to
11232         ~/.geturlrc).
11233
11234         * http.c (gethttp): Print the HTTP request in debug mode.
11235
11236         * connect.c (iread): Added EINTR check loop to select-ing
11237         too. EINTR is now correctly handled with select().
11238
11239         * TODO: new file
11240
11241 1996-05-07  Hrvoje Niksic  <hniksic@srce.hr>
11242
11243         * host.c (same_host): Made the function a little bit more
11244         intelligent regarding diversified URL syntaxes.
11245
11246         * url.c (skip_url): Spaces are now skipped after URL:
11247
11248         * Released 1.3.1 with the patch to prevent crashing when sending
11249         NULL to robot* functions and the patch to compile "out of the box"
11250         on AIX.
11251
11252         * recr.c (recursive_retrieve): Added checking whether this_url is
11253         NULL when calling the robot functions.
11254
11255         * ChangeLog: New file.