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