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