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