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