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