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