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