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