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