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