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