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