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