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