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