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