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