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