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