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