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