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