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