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