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