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