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