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