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