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