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