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